我有一个遵循以下长模式的数据框:
Name MedName
Name1 atenolol 25mg
Name1 aspirin 81mg
Name1 sildenafil 100mg
Name2 atenolol 50mg
Name2 enalapril 20mg
并且想得到下面(我不在乎我是否可以这样命名列,只想要这种格式的数据):
Name medication1 medication2 medication3
Name1 atenolol 25mg aspirin 81mg sildenafil 100mg
Name2 atenolol 50mg enalapril 20mg NA
通过这个站点,我已经熟悉了 reshape/reshape2 包,并且已经尝试了几次试图让它工作,但到目前为止都失败了。
当我尝试时,dcast(dataframe, Name ~ MedName, value.var='MedName')
我只得到一堆作为药物名称标志的列(转置的值是 1 或 0)例如:
Name atenolol 25mg aspirin 81mg
Name1 1 1
Name2 0 0
在我融化数据集后,我也尝试了一个dcast(dataset, Name ~ variable)
,但这只是吐出以下内容(只计算每个人有多少药物):
Name MedName
Name1 3
name2 2
最后,我尝试融合数据,然后使用idvar="Name"
timevar="variable"
(其中所有只是 Mednames)进行整形,但这似乎不是为我的问题构建的,因为如果 idvar 有多个匹配项,reshape 只会采用第一个 MedName 并忽略休息。
有谁知道如何使用 reshape 或其他 R 函数来做到这一点?我意识到可能有一种方法可以通过一些 for 循环和条件来以更混乱的方式执行此操作,以基本上拆分和重新粘贴数据,但我希望有一个更简单的解决方案。非常感谢!