R问题-如何在多列中选择包含某些字符串的多行?
Posted
技术标签:
【中文标题】R问题-如何在多列中选择包含某些字符串的多行?【英文标题】:R questions - how to select multiple rows containing certain strings in multiple columns? 【发布时间】:2021-12-22 23:43:43 【问题描述】:使用 R,我正在分析纵向数据集。下表作为示例。我愿意
-
在多列(dg1、dg2、dg3、dg4)中选择包含特定字符串(例如 A1、A13、B1、B2)的多行,同时保留其他列(例如年龄组)。
将具有选定行的受试者分配到 A 组,将具有未选定行的受试者分配到 B 组。
什么是最好的解决方案?提前谢谢!
id dg1 dg2 dg3 dg4 agegroup
1 A1 F1 D1 B3 1
1 B3 A13 C1 B5 2
2 B5 D1 B1 B6 1
2 C1 C1 B4 B2 2
2 D1 C1 B5 A1 3
3 D1 B4 D1 C2 1
4 E1 B1 G1 C3 2
4 E2 B7 F1 S13 3
5 F1 B3 D1 B2 1
【问题讨论】:
【参考方案1】:如果我理解正确,您想检查任何列 dg1 到 dg4 是否包含所需的模式,如果是,则该行的类为“A”,否则为“B”。
> pat=c("A1","A13","B1","B2")
> ifelse(rowSums(mapply(`==`,df[grep("dg",colnames(df))],pat))>0,"A","B")
[1] "A" "A" "A" "A" "B" "B" "B" "B" "A"
【讨论】:
感谢您的建议!我可能做错了什么,但是当我运行您的 R 脚本时,我收到一条错误消息,指出“缺少参数“no”,没有默认值。”相反,我尝试了以下 R 脚本并且它们有效,但我不确定这是否是最佳解决方案,我仍在尝试找出第二个问题。谢谢! d.sub % filter_at(vars(dg1, dg2, dg3, dg4), any_vars(.%in% c("A1" ,"A13", "B1", "B2")))跨度> @Grace 此代码适用于您提供的数据。如果您在数据上运行它并且它不起作用,那么您的数据一定是不同的。您应该调整代码以匹配您的新数据。以上是关于R问题-如何在多列中选择包含某些字符串的多行?的主要内容,如果未能解决你的问题,请参考以下文章