首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误as.numeric:加权平均子集有效完整数据集不起作用

错误as.numeric:加权平均子集有效完整数据集不起作用
EN

Stack Overflow用户
提问于 2014-12-18 10:09:41
回答 1查看 78关注 0票数 1

我是一个R新手,但这件事真的把我难住了--我真的希望更多有经验的人能帮助我。我正在估计一个简单的加权平均值。在我的例子中,我有县的数字编码(FIPS)、土壤碳值和县内土壤覆盖的区域。一个县有不同类型和不同地区的土壤。这意味着给定的县可能在Y1,Y2,Y3地区有X1,X2,X3土壤类型。我想知道基于给定土壤的类型和覆盖面积的整个县的加权平均土壤碳。当我为较小的数据子集(200行)开发一些代码时,当我与手动估计值进行比较时,返回的值是正确的。当我将代码应用于完整的数据集(111,000+行)时,我收到错误消息:

1:总和(soc[which(soc,1 == FIPSi),8]):整数溢出-使用sum(as.numeric(.))

我在子集中没有收到此错误消息。当我尝试求和(as.numeric(...))时按照建议,我收到了一条不同的错误消息。在子集数据中计算的加权平均值在完整数据集中是不同的--即使对于同一县也是如此。

有趣的是,当我将子集数据保存为不同的文件名,但保持底层数据不变时,我收到了与完整数据集中相同的错误消息。这让我认为这不是代码或as.numeric的问题,而是文件本身的问题。但我使用R只有一年左右,我知道我真的不知道。

提前感谢!这是我第一次发布,所以我不确定如何附加数据,如果需要的话,我很乐意发送。

我的代码:

子集数据:

代码语言:javascript
复制
socT<-read.table("R_SOC8.txt", header=TRUE) 
FIPS<-unique(socT[,1])
WA<-c()


for(i in 1:length(FIPS)){
    WA[i]<-crossprod((socT[which(socT[,1]==FIPS[i]),3]),
    (socT[which(socT[,1]==FIPS[i]),8]))/
    (sum(socT[which(socT[,1]==FIPS[i]),8]))
}


test8<-cbind(FIPS, WA)

print(test8)

完整数据代码:

代码语言:javascript
复制
soc<-read.table("R_SOC20.txt", header=TRUE)
FIPS<-unique(soc[,1]) 
WA<-c()


for(i in 1:length(FIPS)){
    WA[i]<-crossprod((soc[which(soc[,1]==FIPS[i]),3]),
    (soc[which(soc[,1]==FIPS[i]),8]))/
    (sum(soc[which(soc[,1]==FIPS[i]),8]))
 }


fipsoc20<-cbind(FIPS, WA)

print(fipsoc20)

示例输出:

子集:

代码语言:javascript
复制
     FIPS        WA
[1,] 10001  825.0657
[2,] 10003 1327.9600
[3,] 10005  767.9470
[4,] 10007  731.9469

完整数据:

代码语言:javascript
复制
           FIPS       WA
   [1,]  10001 825.0657
   [2,]  10003       NA
   [3,]  10005       NA
   [4,]  10007 731.9469
EN

回答 1

Stack Overflow用户

发布于 2014-12-18 10:55:56

看起来您正在使用integer类型,并且应该使用double。您可以很容易地从integer帮助页面中看到这一点:

?integer注意到R的当前实现对整数向量使用32位整数,因此可表示的整数的范围被限制在大约+/-2*10^9: doubles可以精确地容纳更大的整数。

我不能保证这一点,因为你没有张贴你的数据结构。尝试使用typeof()进行确认。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27538150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档