2012-12-08 29 views
3

我有一個subset()函數的問題。我怎樣才能通過觀察次數對我的數據框的一個因子進行分類?子集()通過其觀察數的一個因子

NAME  CLASS   COLOR VALUE  
    antonio  B   YELLOW  5 
    antonio  B   BLUE  8 
    antonio  B   BLUE  7 
    antonio  B   BLUE  12 
    luca   C   YELLOW 99 
    luca   B   YELLOW 87 
    luca   B   YELLOW 98 
    giovanni  A   BLUE  48 

我想獲得其中的三個因素「NAME」,「類」和「COLOR」爲了使數值的平均值比較,至少三次數據。在這種情況下,我會獲得:

NAME  CLASS   COLOR VALUE  
    antonio  B   BLUE  mean 

因爲安東尼是唯一爲每個因素三點意見

太感謝你了

回答

10

可以使用table功能如下:

subset(df, table(FACTOR)[FACTOR] >= 3) 
# FACTOR VALUE 
# 1 ANTONIO  5 
# 2 ANTONIO  8 
# 3 ANTONIO  7 

爲了幫助您省略並且,看看這些返回:

table(df$FACTOR) 
table(df$FACTOR)[df$FACTOR] 
table(df$FACTOR)[df$FACTOR] >= 3 

你也使用ave函數來計算的觀測次數:

subset(df, ave(VALUE, FACTOR, FUN = length) >= 3) 

這最後一個方法可能是,如果你有一個更靈活一點像您在評論和更新問題中提出的多種因素。你可以這樣做:

subset(df, ave(VALUE, NAME, CLASS, COLOR, FUN = length) >= 3) 
+0

好,所以如果我有兩個因素是它仍然是正確的這種方式?:子集(DF,表(因子1,因子2)因子1]> = 3)謝謝你這麼多 – Spigonico

+0

這是不清楚,你可以編輯你的問題,並提供一個你的意思是兩個因素的例子(不要忘了給予預期的輸出。) – flodel

+0

好的,我編輯了我的問題。它更清楚嗎?在此先感謝NIk – Spigonico

相關問題