用于通过索引对矢量进行分区并对该分区执行操作的惯用R代码
我试图在R中找到惯用的方法来通过某个索引向量对数值向量进行分区,找到该分区中所有数字的总和,然后将每个单独的条目除以该分区总和。换句话说,如果我从这开始:
df <- data.frame(x = c(1,2,3,4,5,6), index = c('a', 'a', 'b', 'b', 'c', 'c'))
我希望输出创建一个向量(让我们称之为z):
c(1/(1+2), 2/(1+2), 3/(3+4), 3/(3+4), 5/(5+6), 6/(5+6))
如果我这样做是SQL并且可以使用窗口函数,我会这样做:
select x / sum(x) over (partition by index) as z from df
如果我使用plyr,我会做这样的事情:
ddply(df, .(index), transform, z = x / sum(x))
但我想知道如何使用标准的R函数编程工具,如mapply / aggregate等。
料青山看我应如是
慕哥9229398