我有一個20列的data.frame。前兩個是因素,其餘是數字。我想將前兩列用作分割變量,然後將mean()
應用於其餘列。ddply如何處理「拆分」變量的因素?
對於ddply()
,這看起來像一個快速簡單的工作,但是,輸出data.frame的結果並不是我正在尋找的。下面是隻用一個數據的列的最小例如:
Aa <- c(rep(c("A", "a"), each = 20))
Bb <- c(rep(c("B", "b", "B", "b"), each = 10))
x <- runif(40)
df1 <- data.frame(Aa, Bb, x)
ddply(df1, .(Aa, Bb), mean)
的輸出是:
Aa Bb x
1 NA NA 0.5193275
2 NA NA 0.4491907
3 NA NA 0.4848128
4 NA NA 0.4717899
Warning messages:
1: In mean.default(X[[1L]], ...) :
argument is not numeric or logical: returning NA
警告重複8次,大概是一旦爲每個呼叫到mean()
。我猜這是因爲試圖採取一個因素的意思。我可以這樣寫:
ddply(df1, .(Aa, Bb), function(df1) mean(df1$x))
或
ddply(df1, .(Aa, Bb), summarize, x = mean(x))
兩者做的工作(不給NAS),但我寧願避免編寫出18個這樣的x = mean(x)
報表,每一個我的數字的列。
是否有一個通用的解決方案?如果在其他地方有更好的答案,我不會接受ddply
。
作爲聚合所有,但自變量,嘗試:骨料(〜AA + BB,數據= DF1,平均) – kohske 2011-03-27 05:22:59