我想在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