我有一个遵循以下长模式的数据框:
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"
(其中全部都是 Medname),但是这似乎不是为我的问题构建的,因为如果 idvar 有多个匹配项,则重塑只采用第一个 MedName 并忽略其余部分。
有谁知道如何使用 reshape 或其他 R 函数来做到这一点?我意识到可能有一种方法可以用一些 for 循环和条件以更混乱的方式来基本上分割和重新粘贴数据,但我希望有一个更简单的解决方案。太感谢了!