r比较具有相同后缀的列



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

我更喜欢使用数据的解决方案。表包。

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"))]

您可以创建两个列名向量,并使用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

相关内容

  • 没有找到相关文章

最新更新