将 NA 值替换为 R 中列的第一个 NonNA 值

Replace NA value with first NonNA value of a column in R

我有多个列的数据框 (df)[33] 对于某些列,第一个观察结果是 NA ,我想用第一个 "Non 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)))]

如有任何帮助,我们将不胜感激。谢谢你。

你是想拥有这样的东西吗?

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))