第一次在这里发帖!我在使用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。所有的价值都被误算了。
有人能解释我为什么会遇到这个问题吗?我在这里错过了什么吗?我的代码错了吗?
谢谢!
答案 0 :(得分:5)
您的方法存在两个问题:
ddply
总和(Area
)。如果您未指定列,ddply
会将所有列(ID
,per
和Area
)的值相加。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