我有一个data.frame
看起来与此类似的:
Y date value1 value2
a 2013-01-01 28.857326 9.0206351
a 2013-01-02 13.675526 5.7823725
a 2013-01-03 20.115434 9.3267285
a 2013-01-04 -4.255547 0.9174301
a 2013-01-05 20.898522 9.7821027
b 2013-01-01 5.478783 27.0027194
b 2013-01-02 21.195939 -14.8786857
b 2013-01-03 -4.407236 18.9189197
b 2013-01-04 25.910805 1.0627444
b 2013-01-05 -2.511209 39.0908554
我想计算以下 (value1 * value2) / sum(value1) 其中 sum(value1) 应该只对每个日期的值求和,例如第一行数据应该计算为:(28.857326 * 9.0206351) / (28.857326 + 5.478783)。
我都试过了:
ddply(x, .(date), summarize, freq=length(date), calc=(value1 * value2) / sum(value1))
和
ddply(x, .(date), summarize, calc=(value1 * value2) / sum(value1))
但我收到第一次调用的错误和第二次错误的结果。
这是生成虚拟数据的代码:
a <- rnorm(10, 10, 10)
b <- rnorm(10, 10, 10)
x <- data.frame(y=c(rep("a", times=5), rep("b", times=5)), date=c(seq(as.Date("2013-01-01"), as.Date("2013-01-05"), by="days")), value1=a, value2=b)