R DataFrame引领NA转变



我已经搜索了比我想承认的时间更长的时间,以便将领先的NA转移到最后。接近几个堆栈问题"在 R 中剪切外部 NA","在 R 中旋转矩阵","na.locf 删除前导 NA,保持其他 [关闭]"以及查看动物园包中的 na.trim 函数。 本质上我想把这个变成:

D <- matrix(c(1:9), 3)
D[2,1]<- NA
D[3,1]<- NA
D[3,2]<- NA
D <- as.data.frame(D)

进入这个:

D1 <- data.frame(V1 = c(1,5,9),
       V2 = c(4,8,NA),
       V3 = c(7,NA,NA))

任何帮助一如既往,非常感谢!

谢谢

您可以在

逐行apply中使用sort(..., na.last = T)

as.data.frame(t(apply(D, 1, sort, na.last = T)))
#  V1 V2 V3
#1  1  4  7
#2  5  8 NA
#3  9 NA NA

更新

为避免订购非NA条目,您可以执行以下操作:

# Revised sample data
D <- matrix(c(1:9), 3)
D[2,1]<- NA
D[3,1]<- NA
D[3,2]<- NA
D <- as.data.frame(D)
D[2,2:3] <- c(8, 5);
D;
#  V1 V2 V3
#1  1  4  7
#2 NA  8  5
#3 NA NA  9

as.data.frame(t(apply(D, 1, function(x) c(x[!is.na(x)], x[is.na(x)]))))
#V1 V2 V3
#1  1  4  7
#2  8  5 NA
#3  9 NA NA

最新更新