如何在R中将两列连成一列

时间:2017-02-18 22:33:51

标签: r dataframe

假设我在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

我该怎么做?

2 个答案:

答案 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)

我们可以使用pmaxpmin来执行此操作(来自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"))