子集基于包含特定单词的列名

时间:2015-03-04 13:43:28

标签: r

我正在尝试对包含“disagreement”一词的列进行子集化,但保留包含ID信息的前三列。如何调整以下代码以保留ID列?

df.disagreement <- df[ , grepl("disagreement", names( df ) )]

3 个答案:

答案 0 :(得分:2)

不确定这是不是这个意思: df.disagreement <- df[ , c(TRUE, TRUE, TRUE, grepl("disagreement", names( df )[-c(1:3)] ))]

答案 1 :(得分:2)

这是select() dplyr出生的情况:

library(dplyr)
select(df, 1:3, contains("disagreement"))

答案 2 :(得分:1)

df.disagreement <- df[ , names(df) %in% c("index1", "index2", "index3") | 
                         grepl("disagreement", names( df ) )]

OR

df.disagreement <- df[ , names(df) %in% names(df)[1:3] | 
                         grepl("disagreement", names( df ) )]

也许解释也很有价值......所以,你的grepl语句会产生一个TRUE / FALSE的向量,其长度为df中的名字数。因此,上面的解决方案使用TRUE / FALSE向量并使用逻辑OR(|)和另一个TRUE / FALSE向量(%(%)中的名称(df)%)。您也可以使用另一个语句执行此操作,只需添加另一个语句或者&amp;并保持罗林'。