【问题标题】:r simple way to merge 2 columns with not NA values [duplicate]r简单的方法来合并2列没有NA值[重复]
【发布时间】:2017-09-12 12:53:51
【问题描述】:

如何将其合并为 1 列?

df <- data.frame(a = c("1", "2", NA, NA), b = c(NA, NA, "3", "4"), c = c(NA, "5", "6", NA), stringsAsFactors = F)

我只想将所有值从 b 获取到没有 NA 的 a。所以 a 应该是:“1”、“2”、“3”、“4”。 (现在需要从 df 中的 2 个以上的列中选择)

这效果不好: df$a <- df$b[!is.na(df$b)]

【问题讨论】:

  • 查看链接的帖子,其中有许多适用于多列的解决方案。例如,按照下面 akrun 的建议,尝试:dplyr::coalesce(df$a, df$b, df$c)

标签: r dataframe


【解决方案1】:

我们可以使用pmax

df$a <- do.call(pmax, c(df, na.rm = TRUE))

或coalesce

library(dplyr)
df %>%
   mutate(a = coalesce(a,b))
#  a    b
#1 1 <NA>
#2 2 <NA>
#3 3    3
#4 4    4

【讨论】:

  • 好的,谢谢。这个coalesce 函数可以解决问题。
猜你喜欢
  • 2018-07-27
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多