根据字符变量的一部分从R数据帧中删除行

时间:2015-11-24 21:40:43

标签: r

我有一个数据框,在第一列中有一个变量(类型:字符),有些行以“#”开头。但是变量中还有其他单词(比方说:“#AA”。我想删除第一列变量以#开头的行。我没有找到办法做到这一点。有什么建议吗?

数据的一个例子是:

mydata = as.data.frame(matrix(sample(c("AA", "AB", "BA", "BB", "--"), 7200, replace = T),
+                        nrow = 600, ncol = 12))
mydata$V1 = as.character(mydata$V1)
mydata$V1 = ifelse(mydata$V1 == "AA", "# AA",mydata$V1)
head(mydata)

感谢。

1 个答案:

答案 0 :(得分:3)

尝试在第一列中的每个元素的开头搜索字符,然后使用该索引进行子集化:

head(mydata[-grep("^#", mydata$V1),])
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
# 2 -- BB AB -- -- BB AB AB AA  BB  AA  BB
# 3 AB BB AB AB -- -- BA AA AA  BB  BB  AA
# 4 -- AA AB BB BA BB AB BA BA  AB  --  BB
# 5 AB BA AB BA BB AB BA BB BB  AA  BB  BA
# 6 BA AA -- AB BB -- BA BB AB  AB  BB  --
# 7 AB BA BA AA BB BB BA BB AA  BB  BB  BA