首页 文章

ddply函数求和中的错误?

提问于
浏览
5

第一次在这里发帖!我在使用ddply函数时遇到问题 . 我有这个表,我想用“LC”列总结,并在“Area”列中添加值:

ID LC  per     Area
1  1  7 0.29  62428.3
2  1  7 0.79 170063.3
3  1  4 0.40  86108.0
4  1  7 0.43  92566.1
5  1  6 1.00 215270.0
6  1  7 0.61 131314.7

根据这个数据框架,我希望如下:

LC   Area
4  86108.0
6 215270.0
7 456372.4

应用ddply函数我得到以下结果:

> ddply(x, 'LC', sum)
  LC       V1
1  4  86113.4
2  6 215278.0
3  7 456406.5

格式是完美的,但值中存在一些差异 . 例如,类7的值应为456372.4,而ddply则报告值为456406.5 . 相差34.1 . 所有的 Value 都是错误的 .

有人能解释我为什么会遇到这个问题吗?我在这里错过了什么吗?我的代码错了吗?

谢谢!

1 回答

  • 5

    您的方法有两个问题:

    • 你需要告诉 ddply 总结一下( Area ) . 如果未指定列, ddply 将所有列的值相加( IDperArea ) .

    • 您可以使用 summarise 参数聚合数据 .

    此代码有效:

    x <- read.table(text="  ID LC  per     Area
    1  1  7 0.29  62428.3
    2  1  7 0.79 170063.3
    3  1  4 0.40  86108.0
    4  1  7 0.43  92566.1
    5  1  6 1.00 215270.0
    6  1  7 0.61 131314.7", header = TRUE)
    
    
    library(plyr)
    
    ddply(x, .(LC), summarise, sum(Area))
    

    结果:

    LC      ..1
    1  4  86108.0
    2  6 215270.0
    3  7 456372.4
    

相关问题