【问题标题】:Make a new column based on conditions, data.table R根据条件新建一列,data.table R
【发布时间】:2022-11-22 01:51:37
【问题描述】:

我有一个包含具有特定值的 data.table 的函数:

 add_q <- function () {

DT = data.table (X = c("A", "A1", "B", "B1"), Y = c("C", "C1", "D", "D1"))}

这将为我的两列 X 和 Y 提供值。我想创建一个第三列,对于具有 A、C、A1、C1 的值,值为 YES,对于其余值,值为 NO。

怎么做?

【问题讨论】:

  • 你想要它在函数内部吗?另外,你尝试了什么?

标签: r data.table


【解决方案1】:

更新了缩短的代码(非常感谢@B. Christian Kamgang:

使用fifelse我们可以做这样的事情:

library(data.table)

add_q <- function (DT, Z) {

  setDT(DT)[, Z :=  fifelse(grepl("A|C", X) | grepl("A|C", Y), "Yes", "NO")]
  DT
  }

DT = data.table (X = c("A", "A1", "B", "B1"), Y = c("C", "C1", "D", "D1"))

add_q(DT, Z)
DT

    X  Y   Z
1:  A  C YES
2: A1 C1 YES
3:  B  D  NO
4: B1 D1  NO

【讨论】:

  • 请注意,您可以避免使用fifelse(grepl("A|C", X) | grepl("A|C", Y), "Yes", "NO") 两次调用fifelse
  • 非常感谢您的建议!
猜你喜欢
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
  • 2021-03-06
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多