【发布时间】:2019-04-12 18:52:34
【问题描述】:
我正在尝试使用 apply() 系列的函数。我想创建一个基于索引返回加权平均值的函数。在这种情况下,向量“k”。这是我的示例数据:
#gen data
i=c(1,2,3,4)
j=c(1,2,1,2)
k=c(1,2,3,1)
t=c(1,1,1,1)
w=c(5,10,15,20)
d=c(4,5,10,2)
df<- data.frame(i,j,k,t,w,d)
#weighted mean
w=df[,"w"]
y=df[,"d"]
index=df[,"k"]
接下来,我对向量 p 和 s 的维度有疑问。
p <- w*y
s <- array(tapply(w,index,FUN=sum))
dim(p) = 4
dim(s) = 3
我想根据索引向量 k=c(1,2,3,1) 重复 s[1]=25 的值,这样 s[4]=25 也是如此!
最终目标是能够计算:
r <- p/s
【问题讨论】:
-
因为你的
index不是唯一的 -
你只是想让
s的长度相同吗,这可行吗:s <- rep(s, 2)[1:length(index)]
标签: r