【问题标题】:Using the ddply comand on a subset of data对数据子集使用 ddply 命令
【发布时间】: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 内做快速解答。

标签: r plyr


【解决方案1】:

不要在plyr“函数”中使用您的data.frame's 名称。只需引用列名,就好像它已定义:

ddply(mydata, .(seasons), summarise, x=c(0, cumsum(u*10.8)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多