在R.
我有以下数据集,并希望创建一个新列Medication1_coded,其中列“Medication1”中的所有“扑热息痛”和“布洛芬”值将显示为1,所有“阿片类”和“氯胺酮”值显示为组2,其余值将显示为组3。然后,我需要重复此操作,每次为列名中包含名称“药物”的10列创建一个新列。
df <- data.frame(id = paste0("ID",1:4),
Medication1= c("paracetamol", "ibuprofen", "opiate", "sertraline"),
Medication2= c("Lipitor", "ketamine", "zoloft", "xanax"),
Medication3= c("ibuprofen", "paracetamol", "Zocor", "Zestril"),
other= LETTERS[1:4])
非常感谢所有可爱的人在那里〈3
4条答案
按热度按时间sbdsn5lh1#
您可以
reframe
across
您的列,在这种情况下,那些contains
“Medications”nnsrf1az2#
以R为底:
另一种方式:
如果要使用本机管道:
ztmd8pv53#
首先
pivot_longer
数据,然后left_join
按名称替换代码,将所有其他名称替换为3,最后pivot_wider
为原始格式。数据
cgyqldqp4#
碱基R
方法一:
方法二:
方法三:
结果: