2012-11-29 49 views
0

我正在尋找一種方法來刪除少於3個觀察值的數據幀中的行。讓我以更好的方式解釋這件事。 我有一個6個獨立變量和1個依賴的數據框。由於我正在使用分面在ggplot2中進行密度圖,因此不會繪製(不明顯)繪製少於3個觀測值的變量。我正在尋找一種方法來刪除少於3個觀測值的這些行。這是數據的一個示例:用少於3個觀察值刪除r表中的行

'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

提供樣本數據的實際輸出將會很有用。您可以通過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最常實現的。如果您提供繪圖代碼,那可能會說明更好的方法來刪除不想繪製的數據。

+0

現在你有ggplot腳本。我想從數據框中刪除行。 – Spigonico

+0

你仍然不完全是一個可重複的例子。您需要添加您用於製作情節的數據。請參閱此問題的詳細信息:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example。我的猜測是,你應該可以將2和2與上面的代碼和你的代碼放在一起,如果不是的話 - 返回一個關於你被卡住的具體問題。 – Chase