选择某些行名称

时间:2012-08-18 23:37:53

标签: r row names

有没有办法从一列中的名称中没有单词的数据框中选择所有行?

示例:

从此数据框

Organism    Value
Boa (sick)  3
Cat         1
Cat (sick)  2
Wolf        2
Wolf (sick) 8
Crow        4

我希望名称中没有(sick)的行:

Organism    Value
Cat         1
Wolf        2
Crow        4

我知道数据格式错误,最好有第三列“健康”,但我必须使用我拥有的数据。

3 个答案:

答案 0 :(得分:7)

d <- data.frame(Organism=c("Boa (sick)", "Cat", "Cat (sick)", "Wolf", "Wolf (sick)", "Crow"), Value=c(3, 1, 2, 2, 8, 4), stringsAsFactors=FALSE)

d[!grepl(pattern="(sick)", x=d$Organism, fixed=TRUE), ]
#  Organism Value
#2      Cat     1
#4     Wolf     2
#6     Crow     4

答案 1 :(得分:1)

尝试

df<-data.frame(Organism=c('Boa (sick)','Cat','Cat (sick)','Wolf','Wolf (sick)','Crow'),Value=c(3,1,2,2,8,4))
expel<-grep('(sick)',df$Organism)
if(length(expel)>0){
  df1<-df[-expel,]
}
df1
#  Organism Value
#2      Cat     1
#4     Wolf     2
#6     Crow     4

答案 2 :(得分:0)

另一个非常相似的替代方案:

subset(d, grepl("(sick)", Organism, fixed=TRUE))