我有一个数据框,遵循以下长模式:
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循环和条件基本上分割并重新粘贴数据,但我希望有一个更简单的解决方案.非常感谢!