【发布时间】:2013-12-16 15:23:10
【问题描述】:
我在使用“plyr”包的“ddply”命令时遇到了一些问题。我创建了一个看起来像这样的数据框:
u v intensity season
24986 -1.97 -0.35 2.0 1
24987 -1.29 -1.53 2.0 1
24988 -0.94 -0.34 1.0 1
24989 -1.03 2.82 3.0 1
24990 1.37 3.76 4.0 1
24991 1.93 2.30 3.0 2
24992 3.83 -3.21 5.0 2
24993 0.52 -2.95 3.0 2
24994 3.06 -2.57 4.0 2
24995 2.57 -3.06 4.0 2
24996 0.34 -0.94 1.0 2
24997 0.87 4.92 5.0 3
24998 0.69 3.94 4.0 3
24999 4.60 3.86 6.0 3
我尝试在 u 和 v 值上使用函数 cumsum,但没有得到我想要的。当我选择我的数据子集时,对应于一个季节,例如:
x <- cumsum(mydata$u[56297:56704]*10.8)
y <- cumsum(mydata$v[56297:56704]*10.8)
...这非常有效。问题是我得到了一个包含 92 个季节的庞大数据集(67208 行),我想让这个函数在数据子集上工作。所以我尝试了这个:
new <- ddply(mydata, .(mydata$seasons), summarize, x=c(0,cumsum(mydata$u*10.8)))
...结果如下所示:
24986 1 NA
24987 1 NA
24988 1 NA
我在 stackoverflow 和其他网站上发现了一些与此相关的问题,但没有一个能帮助我解决我的问题。如果有人有想法,欢迎您;)
【问题讨论】:
-
不要在 plyr“函数”中使用你的 data.frame 的名称。只需引用列名,就好像它已定义:
ddply(mydata, .(seasons), summarise, x=c(0, cumsum(u*10.8)))。 -
好的,我现在感到很惭愧...非常感谢您抽出宝贵时间,再见!
-
@Justin,请发帖作为答案?
-
@BenBolker 完成,坏习惯!
-
@Justing:我也经常在 cmets 内做快速解答。