【问题标题】:How can I make a new column by adding two columns with a priority given to one of them?如何通过添加两列并赋予其中一个优先级来创建新列?
【发布时间】:2020-02-18 18:54:52
【问题描述】:

我有以下数据框,我想得到如图所示的 C。检查A是否有值,那么它将出现在C中。如果A中没有值,则C将取B值。

data <- 
structure(list(A = c(15L, 20L, NA, 8L), B = c(7L, NA, 9L, 6L), 
    C = c(15L, 20L, 9L, 8L)), class = "data.frame", row.names = c(NA, 
-4L))

我尝试了类似的方法:

data$C <- coalesce(data$A, data$B)

【问题讨论】:

  • 看起来您显示的代码确实提供了您显示的输出。有什么问题?
  • 就像 Toucan 说的你的代码很好。你在找什么?

标签: r


【解决方案1】:

我们可以使用

data %>% mutate(C = coalesce(A, B))

【讨论】:

    【解决方案2】:

    这是使用 ifelse 的基本 R 解决方案

    data$C <- with(data,ifelse(is.na(A),B,A))
    

    which + aggregate

    data$C <- data[as.matrix(aggregate(col~row,which(!is.na(data),arr.ind = TRUE),FUN = min))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      相关资源
      最近更新 更多