我有一个看起来像这样的数据框:
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来完成?
由于
答案 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