r - 根据两个索引向量用值替换 NA
r - Replace NAs with values according to two index vectors
我有一个空间点数据框,其中包含跨越数年的房屋销售特征。
我在 {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,因此遍历整个过程相当麻烦。
您可以根据自己的目的使用以下功能。
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 循环。
说真的,这里有很多人说 "there aer 10min data r cant handle etc etc." R 不是 excel,创建 R 是为了处理数据
我有一个空间点数据框,其中包含跨越数年的房屋销售特征。 我在 {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,因此遍历整个过程相当麻烦。
您可以根据自己的目的使用以下功能。
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 循环。
说真的,这里有很多人说 "there aer 10min data r cant handle etc etc." R 不是 excel,创建 R 是为了处理数据