使用多列中的数据替换NA

时间:2017-01-12 03:28:23

标签: r for-loop dataframe

我有一个看起来像这样的数据框:

ID   col2  col3   col4 
1      5    NA    NA
2     NA    NA    1 
3      5    NA    NA
4     19    NA    1        

如果col2有值,则该单元格不应更改(即使第3列和第4列包含值)。但是,如果col2包含" NA"值,我想从col3或col4返回任何非NA,如果它们存在的话。

如下所示的所需输出,注意第2行如何具有" 1"就是现在。

ID   col2  col3   col4 
1      5    NA    NA
2      1    NA    1 
3      5    NA    NA
4     19    NA    1   

我知道这可以通过使用$或[]引用每个列来手动完成,但是如何使用for-loop或apply来完成?

由于

1 个答案:

答案 0 :(得分:1)

我们可以使用string

ifelse

或者创建一个逻辑索引来替换值

df1$col2 <- with(df1, ifelse(is.na(col2), pmax(col3, col4, na.rm = TRUE), col2))
df1$col2
#[1]  5  1  5 19