我想在R中做一個「group by」 - 樣式加權平均值。有了一些基本的意思,下面的代碼(使用Hadley的plyr包)運行良好。group by R,ddply with weighted.mean
ddply(mydf,.(period),mean)
如果我用weighted.mean我得到以下錯誤「‘x’和‘W’必須具有相同的長度」,這一點我不明白,因爲weighted.mean部分以外的作品同樣的方法ddply。
weighted.mean(mydf$mycol,mydf$myweight) # works just fine
ddply(mydf,.(period),weighted.mean,mydf$mycol,mydf$myweight) # returns the erros described above
ddply(mydf,.(period),weighted.mean(mydf$mycol,mydf$myweight)) # different code same story
我想編寫自定義函數,而不是使用weighted.mean,然後把它傳遞給ddply甚至寫新的東西從頭與子集。就我而言,希望工作太多,但應該有一個更聰明的解決方案,以及已有的東西。
thx任何建議提前!
這是很好的。到目前爲止,還沒有很多與匿名功能有關。看起來很值得一看。我還沒有完全得到語法/想法,但我會研究它,thx尋求幫助!您是否需要在一行中打印所有內容,因爲那裏沒有「{}」?我可以在哪裏瞭解有關匿名功能的內容? – 2010-07-18 21:50:44
那麼,*所有*這些'* apply','by',...函數使用匿名函數,所以你應該找到大量的例子。一旦您將多個命令組合在一起,就需要花括號。最後,你沒有使用一個匿名函數 - 你也可以定義你自己的 - 但使用它們可以節省輸入:) – 2010-07-18 22:03:00
'lapply(split(iris,species),weighted.mean)'或者那樣的? – aL3xa 2010-07-18 23:27:32