R 替换NA和x27;s使用多列数据
我有一个看起来像这样的数据框:R 替换NA和x27;s使用多列数据,r,for-loop,dataframe,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
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循环或apply来完成呢
谢谢如果还有
df1$col2 <- with(df1, ifelse(is.na(col2), pmax(col3, col4, na.rm = TRUE), col2))
df1$col2
#[1] 5 1 5 19
如果COL3和COL4都具有Na元素在COL2中的非NA值,那么你应该考虑哪一个呢?这是个很好的问题。他们两个都没关系!作品非常感谢。
i1 <- is.na(df1$col2)
df1$col2[i1] <- do.call(pmax, c(df1[i1, 3:4], na.rm = TRUE))