将 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))
我有多个列的数据框 (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))