我有一个空间点数据框架,其中包含销售数年的房屋特征。 我在{sp}中使用“over”附加了邻域属性。对于我的住房数据的每一年,都有一个社区的数据集加入。
问题:不同年份的邻域数据并不总是包含相同的变量。因此,当加入住房数据时,我在这些非共享变量中获得了在某些特定年份出售的房屋的NA。
理想的解决方案:对于我的数据中的每一行,用相同的邻域(nb)替换具有相同列数据(V1)的NA,但是最接近的年份(y)。
[,y] [,nb] [,V1]
[1,] 1993 30000 2752
[2,] 1993 30000 2752
[3,] 1994 30000 NA
[4,] 1994 50000 2554
[5,] 1995 30000 NA
[6,] 1996 30000 2650
[7,] 1996 50000 NA
理想情况下,替换NAs [3,V1] = 2752
; [5,V1] = 2650
和[7,V1] = 2554
。数据框包含超过250k的obs,所以循环整个过程相当麻烦。
答案 0 :(得分:0)
您可以将以下功能用于您的目的。
get_rid_of_NAs <- function(urmatrix) {
myvector <- vector()
counter <- 0
myvector_1 <- vector()
for(i in 1:nrow(urmatrix)){
out <- urmatrix[i,2]
out_1 <- urmatrix[i,1]
myvector_1 <- c(myvector_1,out_1)
myvector <- c(myvector,out)
if(urmatrix[i,3]!=NA){
next
}
orders <- order(myvector[myvector==out],decreasing=TRUE)
index <- which.min(myvector_1[orders])
urmatrix[i,3] <- urmatrix[index,3]
}
return(urmatrix)
}
现在使用该函数进行计算。
get_rid_of_NAs(ENTERYOURMATRIXHERE.)
R可以轻松处理这样的循环,但在这种情况下我建议使用for循环。
严重的是,这里有很多人说&#34;有10分钟的数据无法处理等等。&#34; R不是excel,创建R来处理数据