【问题标题】:r data.table - compare columns with same suffixr data.table - 比较具有相同后缀的列
【发布时间】:2021-08-18 01:51:44
【问题描述】:

我有一对具有相同后缀的变量,想比较并生成 Y 或 N 标志。我可以一个一个地输入条件,但只是想知道是否有更好的方法来使用 apply 函数。

我更喜欢使用 data.table 包的解决方案。

x <- data.table(x_abc="A1", y_abc="A1", x_pqr="A1", y_pqr="B1")
x[,':='(abc=ifelse(x_abc==y_abc,"Y","N"), pqr=ifelse(x_pqr==y_pqr,"Y","N"))]

【问题讨论】:

  • 这是一个代表多列数据集的小例子吗?

标签: r data.table apply


【解决方案1】:

您可以创建 2 个列名向量并使用 Map 并行比较它们 -

library(data.table)

x_cols <- grep('^x', names(x), value = TRUE)
y_cols <- grep('^y', names(x), value = TRUE)
new_cols <- sub('x_', '', x_cols)

x[, (new_cols) := Map(function(a, b) ifelse(a == b, 'Y', 'N'), 
                  .SD[, ..x_cols], .SD[, ..y_cols])]

x

#   x_abc y_abc x_pqr y_pqr abc pqr
#1:    A1    A1    A1    B1   Y   N

【讨论】:

    猜你喜欢
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2022-11-18
    • 2019-11-12
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多