我有数据框(df)有多列[33],对于某些列,第一次观察是NA,我想要替换第一行" Na"价值与第一"非Na"值。
如果这是我的数据数据框:
x y z zz
1 na na na
2 na na na
3 S 3 na
4 d 4 7
我希望我的数据框
x y z zz
1 S 3 7
2 na na na
3 S 3 na
4 d 4 7
我使用以下代码来获取单个列的结果,但是如何为多列动态执行此操作。
df$y[1] <- df$y[min(which(!is.na(df$y)))]
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
你的意思是拥有这样的东西吗?
df[1,] <- apply(df, 2, function(x) trimws(x[min(which(!is.na(x)))]))
输出为:
x y z zz
1 1 S 3 7
2 2 <NA> <NA> <NA>
3 3 S 3 <NA>
4 4 d 4 7
示例数据:
df <- structure(list(x = 1:4, y = c(NA, NA, "S", "d"), z = c(NA, NA,
3L, 4L), zz = c(NA, NA, NA, 7L)), .Names = c("x", "y", "z", "zz"
), class = "data.frame", row.names = c(NA, -4L))