【发布时间】:2021-10-08 18:09:10
【问题描述】:
我有一个遵循以下长模式的数据框:
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" (其中所有只是医学名称)重塑数据,但这似乎不是针对我的问题,因为如果有多个匹配的 idvar, reshape 只取第一个 MedName 并忽略其余部分。
有谁知道如何使用 reshape 或其他 R 函数来做到这一点?我意识到可能有一种方法可以通过一些 for 循环和条件来以更混乱的方式执行此操作,以基本上拆分和重新粘贴数据,但我希望有一个更简单的解决方案。非常感谢!
【问题讨论】: