2014-11-06 14 views

回答

1

嘗試

dat[] <- apply(dat,2, function(x) c(x[is.na(x)], x[!is.na(x)])) 
dat 
# V1 V2 V3 V4 V5 V6 
#1 1 NA 3 4 NA 6 
#2 6 2 4 3 NA 1 
#3 1 5 3 4 5 6 

還是一個更好的方法是

dat[] <- lapply(dat, function(x) c(x[is.na(x)], x[!is.na(x)])) 

或使用data.table(由@大衛Arenburg建議)

library(data.table) 
setDT(dat)[, names(dat) := lapply(.SD, function(x) 
         c(x[is.na(x)], x[!is.na(x)]))] 
+0

@大衛Arenburg感謝,偉大的選擇。 – akrun 2014-11-06 19:24:31

+0

謝謝!你們真棒! – Hedgehog 2014-11-07 03:44:53

0

喜歡的東西:

move_NAs_to_end <- function(v) { c(v[!is.na(v)], v[is.na(v)]) } 

apply(dat, 2, move_NAs_to_end) 
    V1 V2 V3 V4 V5 V6 
[1,] 1 2 3 4 5 6 
[2,] 6 5 4 3 NA 1 
[3,] 1 NA 3 4 NA 6 
相關問題