1

我有一个空间点数据框,其中包含跨越数年销售的房屋特征。我在 {sp} 中使用“over”附加了邻域属性。对于我每年的住房数据,都会加入一个社区的数据集。

问题:不同年份的邻里数据并不总是包含相同的变量。因此,当加入房屋数据时,我获得了在某些特定年份出售的房屋的这些非共享变量中的 NA。

理想的解决方案:对于我数据中的每一行,将 NA 替换为来自同一邻域 (nb) 但最近可用年份 (y) 的同一列数据 (V1)。

      [,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

理想情况下,替换 NA 使得[3,V1] = 2752; [5,V1] = 2650, 和[7,V1] = 2554. 数据框包含超过 250k 的 obs,因此循环遍历整个内容相当麻烦。

4

1 回答 1

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 循环。

说真的,这里有很多人说“有 10 分钟的数据无法处理等”。R不是excel,创建R是为了处理数据

于 2016-06-14T12:46:21.937 回答