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。データ フレームには 25 万を超える 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 に答える