我有一个非常大的数据集,我需要对数据集进行子集化,以便仅保留任何药物列(例如药物1、药物2、药物3等,直到药物50)中包含单词“扑热息痛”的ID。
请帮助〈3
df <- data.frame(id = paste0("ID",1:10),
Medication1= c("paracetamol", "ibuprofen", "opiate", "sertraline"),
Medication2= c("Lipitor", "ketamine", "zoloft", "xanax"),
Medication3= c("ibuprofen", "paracetamol", "Zocor", "Zestril"),
other= LETTERS[1:10])
2条答案
按热度按时间dgenwo3n1#
使用dplyr commands的一个潜在解决方案是:
创建于2023年3月10日,使用reprex v2.0.2
要获取包含“扑热息痛”和“扑热息痛”的行,可以使用
ignore.case = TRUE
:如果您希望行具有相同的活性成分但名称不同:
如果你有跨越多行的id(例如ID1),它会变得更加复杂,但一个选项是:
iovurdzv2#
在R中,您可以检查整个 Dataframe 是否与单词“扑热息痛”相等,这会给您一个布尔矩阵。由于
TRUE == 1
和FALSE == 0
,您可以计算rowSums
;很明显你要把大于零的值划分成子集。如果数据中包含
NA
,请使用rowSums(., na.rm=TRUE)
。