小编Hot*_*md6的帖子

从长到宽格式转换/重塑数据帧而不使用"timevar"

我有一个数据框,遵循以下长模式:

   Name          MedName
  Name1    atenolol 25mg
  Name1     aspirin 81mg
  Name1 sildenafil 100mg
  Name2    atenolol 50mg
  Name2   enalapril 20mg
Run Code Online (Sandbox Code Playgroud)

并希望得到以下(我不在乎我是否可以这样命名列,只是想要这种格式的数据):

   Name   medication1    medication2      medication3
  Name1 atenolol 25mg   aspirin 81mg sildenafil 100mg
  Name2 atenolol 50mg enalapril 20mg             NA
Run Code Online (Sandbox Code Playgroud)

通过这个网站,我已经熟悉了reshape/reshape2包,并经历了多次尝试,试图让它工作,但迄今为止失败了.

当我尝试时,dcast(dataframe, Name ~ MedName, value.var='MedName')我只得到一堆列为药物名称的标志(转换的值为1或0)示例:

 Name  atenolol 25mg  aspirin 81mg
Name1              1             1
Name2              0             0 
Run Code Online (Sandbox Code Playgroud)

我在尝试dcast(dataset, Name ~ variable)融化数据集后尝试过,但这只是吐出以下内容(只计算每个人有多少药物):

 Name  MedName
Name1        3
name2        2
Run Code Online (Sandbox Code Playgroud)

最后,我试图融化数据,然后重塑使用idvar="Name" timevar="variable"(其中所有只是Mednames),但是这似乎不是为我的问题构建的,因为如果有多个匹配到idvar,重塑只需要第一个MedName并忽略休息.

有谁知道如何使用重塑或其他R功能这样做?我意识到可能有一种方法以更杂乱的方式执行此操作,其中一些for循环和条件基本上分割并重新粘贴数据,但我希望有一个更简单的解决方案.非常感谢!

transpose r reshape r-faq

18
推荐指数
6
解决办法
4980
查看次数

标签 统计

r ×1

r-faq ×1

reshape ×1

transpose ×1