【发布时间】:2018-03-11 00:15:22
【问题描述】:
我的数据框 (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)))]
任何帮助将不胜感激。谢谢你。
【问题讨论】:
-
我很难理解您想要的输出的逻辑。为什么
z的第二行的值为 2?为什么y的第二行仍然是<NA>?另外,您是只想将值向前推进,还是可以从最后一个非<NA>值向上推进? -
对不起,我编辑它应该保持不变..第二行应该保持不变,因为我只想更改第一行的值..如果第一行是 Na 然后用第一个 nonNA 更改它价值。
-
df[1, ] <- lapply(df, function(x) na.omit(x)[1L]) -
对不起,这没有用。