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。所有的值都计算错误。

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

谢谢!

4

1 回答 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
于 2012-12-12T06:56:03.757 回答