【发布时间】:2017-01-25 07:09:34
【问题描述】:
我正在尝试在 R 中估算 NA 的温度数据。它是具有 487 个天文台和 60 个时间单位(60 个月)的时空数据。
我在这里要做的是将NA 替换为与NA 同月的天文台距离最小(非零)的值。
这是我的 R 代码(temp_1 是我的数据名称)。
pos.min = function(v){ # find positive minimum index
v.na = v
v.na[v==0] = NA
return(which.min(v.na))
}
for (i in 1:60){
for (j in 1:sum(is.na(temp_1[i,]))){
na.index=which(is.na(temp_1[i,]))
dz.index=pos.min(dz[na.index[j],])
new=temp_1[i,dz.index]
temp_1[i,][is.na(temp_1[i,])][j]=new
}
}
但是,当我运行它时,我会收到一条错误消息
temp_1[i, ][is.na(temp_1[i, ])][j] = new 中的错误:替换有 长度为零
我输入了class(new),上面写着data.frame,所以我把它改成了数字new=as.numeric(temp_1[i,dz.inex])。但它会出现同样的错误。
我不明白为什么会收到此错误消息... 非常感谢您的帮助。
【问题讨论】:
-
什么是
temp_1?请展示一个可重复的小示例和预期的输出。我想你可以试试library(zoo); library(data.table) ;setDT(temp_1)[, distance := na.aggregate(distance, FUN=min) , by = month]
标签: r na imputation