我的数据集中有许多NA,我需要将所有这些单元格(在行级别)向左移动. 示例 – 我的数据帧: df=data.frame(x=c("l","m",NA,NA,"p"),y=c(NA,"b","c",NA,NA),z=c("u",NA,"w","x","y")) df x y z 1 l NA u 2 m b NA 3 NA c w
示例 – 我的数据帧:
df=data.frame(x=c("l","m",NA,NA,"p"),y=c(NA,"b","c",NA,NA),z=c("u",NA,"w","x","y")) df x y z 1 l <NA> u 2 m b <NA> 3 <NA> c w 4 <NA> <NA> x 5 p <NA> y
我希望上面的数据帧转换成这个:
x y z 1 l u NA 2 m b NA 3 c w NA 4 x <NA> NA 5 p y NA
请帮忙.
谢谢.
您可以使用标准的apply函数:df=data.frame(x=c("l","m",NA,NA,"p"),y=c(NA,"b","c",NA,NA),z=c("u",NA,"w","x","y")) df2 = as.data.frame(t(apply(df,1, function(x) { return(c(x[!is.na(x)],x[is.na(x)]) )} ))) colnames(df2) = colnames(df) > df x y z 1 l <NA> u 2 m b <NA> 3 <NA> c w 4 <NA> <NA> x 5 p <NA> y > df2 x y z 1 l u <NA> 2 m b <NA> 3 c w <NA> 4 x <NA> <NA> 5 p y <NA>