删除r表中少于3个观察值的行

时间:2012-11-29 14:45:15

标签: r

我正在寻找一种方法来删除数据帧中少于3次观察的行。让我以更好的方式解释这个问题。 我有一个包含6个独立变量和1个依赖变量的数据帧。当我使用分面在ggplot2中进行密度图时,不会绘制少于3个观测值的变量(显然)。我正在寻找一种方法来删除这些行少于3个观察。这是数据的一个例子:

'data.frame':   432 obs. of  6 variables:
$ ID        : Factor w/ 439 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Forno     : Factor w/ 8 levels "Micro","Macro",..: 1 1 1 6 6 6 4 4 4 5 ...
$ Varieta: Factor w/ 11 levels "cc","dd",..: 11 11 11 6 6 6 1 1 1 6 ...
$ Impiego: Factor w/ 5 levels "aperto","chiuso",..: 2 2 2 3 3 3 2 2 2 5 ...
$ MediaL    : num  60.7 58.9 60.5 55.9 56.1 ...
$ MediaL.sd : num  4.81 4.79 4.84 5.27 5.64 ...

ggplot代码:

ggplot(d1,aes(MediaL))+geom_density(aes(fill=Varieta),colour=NA,alpha=0.5)+
    scale_fill_brewer(palette="Set1")+facet_grid(Forno~Impiego)+
    theme(axis.text.x=element_text(angle=90,hjust=1))+theme_mio +xlim(45,65)+
    stat_bin(geom="text",aes(y=0,label=..count..),size=2,binwidth=2)

我想删除少于3次观察的所有互动。

1 个答案:

答案 0 :(得分:1)

提供样本数据的实际输出将非常有用。您可以通过dput(yourObject)而不是您提供的文字表示来提供此信息。但是,下面的相同基本方法似乎与matrixdata.frametable数据结构同样有效。

#Matrix
x <- matrix(c(5,4,4,3,1,5,1,8,2), ncol = 3, byrow = TRUE)
x[x < 3] <- NA
#----
     [,1] [,2] [,3]
[1,]    5    4    4
[2,]    3   NA    5
[3,]   NA    8   NA

#data.frame
xd <- as.data.frame(matrix(c(5,4,4,3,1,5,1,8,2), ncol = 3, byrow = TRUE))
xd[xd < 3] <- NA
#----
  V1 V2 V3
1  5  4  4
2  3 NA  5
3 NA  8 NA

#Table. Simulate some data first
set.seed(1)
samp <- data.frame(x1 = sample(c("acqua", "fango", "neve"), 20, TRUE),
                   x2 = sample(c("pippo", "pluto", "paperino"), 20, TRUE))
x2 <-table(samp)
x2[x2 < 3] <- NA
#----
       x2
x1      paperino pippo pluto
  acqua                    3
  fango        3            
  neve               3     3

ggplot通常喜欢长格式的数据,通常是通过melt()中的reshape2命令实现的。如果您提供绘图代码,这可能会说明一种更好的方法来删除您不想绘制的数据。