假设我在R中有这个数据框。
df <- data.frame( col1 = c(3,4,'NA','NA'), col2 = c('NA','NA',1,5))
col1 col2
1 3 NA
2 4 NA
3 NA 1
4 NA 5
我想有这样的新专栏
col1 col2 col3
1 3 NA 3
2 4 NA 4
3 NA 1 1
4 NA 5 5
我该怎么做?
答案 0 :(得分:1)
目前您的df
不包含真NA
,而是字符'NA'
。根据@ G5W评论,您可能希望拥有真NA
。
一旦我们有了NA
,我们就可以使用:
df$col3 <- ifelse(is.na(df$col1), df$col2, df$col1)
或,dplyr
:
library(dplyr)
df$col3 <- coalesce(df$col1, df$col2)
答案 1 :(得分:0)
我们可以使用pmax
或pmin
来执行此操作(来自base R
)
df$col3 <- do.call(pmax, c(df, na.rm=TRUE))
df$col3
#[1] 3 4 1 5
df <- structure(list(col1 = c(3L, 4L, NA, NA), col2 = c(NA, NA, 1L,
5L)), .Names = c("col1", "col2"), class = "data.frame", row.names = c("1",
"2", "3", "4"))