0

我正在寻找一种方法来删除数据框中少于 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 个观察值的所有交互。

4

1 回答 1

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

melt()ggplot通常喜欢长格式的数据,通常通过reshape2. 如果您提供绘图代码,这可能说明了删除您不想绘制的数据的更好方法。

于 2012-11-29T15:00:26.347 回答