从R中的数据框中删除特定类别

时间:2010-09-28 13:30:03

标签: r dataframe

我在R中的数据框中有一个列,如下所示:

blue
green
blue
yellow
black
blue
green

如何删除指示蓝色的所有行?请记住,我不希望在该行中表示NULL值:我希望删除整行。

谢谢:)

4 个答案:

答案 0 :(得分:5)

还要注意因子变量字符向量之间的区别。

默认情况下,系数会保留所有原始级别,除非您将更改后的矢量重新指定为新因子,或者使用其中一个相关函数。

> DF <- data.frame(v = factor(c("red", "blue", "green", "blue")))
> summary(DF)
     v    
 blue :2  
 green:1  
 red  :1  
> summary(DF[ DF$v != "blue", , drop=FALSE])
     v    
 blue :0  
 green:1  
 red  :1  
> DF <- DF[ DF$v != "blue", , drop=FALSE]; DF$v <- factor(DF$v); summary(DF)
     v    
 green:1  
 red  :1  
> 

答案 1 :(得分:3)

怎么样?
> df1 = data.frame(a=c("Red", "Blue", "Red"), b=1:3)
> df1[df1$a!= "Blue",]
    a b
1 Red 1
3 Red 3

答案 2 :(得分:3)

如果所有这些方括号,逗号和美元符号让您感到困惑,那么为什么不尝试'子集':

> d=data.frame(a=c("Red", "Blue", "Red"), b=1:3)
> subset(d,a!="Blue")
    a b
1 Red 1
3 Red 3

答案 3 :(得分:-1)

> Data[Data!="blue"]
[1] "green"  "yellow" "black"  "green"

> Data[which(Data!="blue",TRUE)]
[1] "green"  "yellow" "black"  "green"

编辑以回应Joris的评论(这适用于1列data.frames):

> str(Data)
'data.frame':   7 obs. of  1 variable:
 $ V1: Factor w/ 4 levels "black","blue",..: 2 3 2 4 1 2 3