获得使用聚合()和总和()不同的结果的功能中的R(Getting different results

2019-11-03 15:12发布

我试图获得总数量的变量的汇总数据帧prop.damagecrop.damage通过STATE变量使用aggregate()函数在用下面的代码R:

stormdata$prop.damage <- with(stormdata, ifelse(PROPDMGEXP == 'K', (PROPDMG * 10^3), ifelse(PROPDMGEXP == 'M', (PROPDMG * 10^6), ifelse(PROPDMGEXP == 'B', (PROPDMG * 10^9), NA))))
stormdata$crop.damage <- with(stormdata, ifelse(CROPDMGEXP == 'K', (CROPDMG * 10^3), ifelse(CROPDMGEXP == 'M', (CROPDMG * 10^6), ifelse(CROPDMGEXP == 'B', (CROPDMG * 10^9), NA))))
damagecost <- with(stormdata, aggregate(x = prop.damage + crop.damage, by = list(STATE), FUN = sum, na.rm = TRUE))
damagecost <- damagecost[order(damagecost$x, decreasing = TRUE), ]

这里的PROPDMGEXPCROPDMGEXP变量用作乘法器PROPDMGCROPDMG数值变量。 我的主要数据集是stormdata

而我得到以下几点:

> head(damagecost)
   Group.1            x
8       CA 120211639720
13      FL  27302948100
38      MS  14804212820
63      TX  12550131850
20      IL  11655920860
2       AL   9505473250

但是,比如,如果我做加法“手动”为加州(“CA”)我得到这样的:

> sum(stormdata$prop.damage[stormdata$STATE == 'CA'], na.rm = TRUE) + sum(stormdata$crop.damage[stormdata$STATE == 'CA'], na.rm = TRUE)
[1] 127115859410

我不明白为什么我得到不同的结果。

Answer 1:

原来,这两个变量prop.damagecrop.damageNA内他们的价值观和那些NAs是影响结果当添加变量aggregate功能。



文章来源: Getting different results using aggregate() and sum() functions in R
标签: sum aggregate