r - 如何按组或类别(按组)将列中的值与 R 中同一数据框中的其他列(具有多个值)匹配

标签 r data.table

所以,我在 R 中有如下所示的数据表:

Claim failure Part code matchcode
23     F1     P1    A   B,A,C
23     F1     P1    D   B,A,C
23     F2     P2    D   B,A,C
23     F2     P2    E   B,A,C
45     F1     P4    X   Y,Z,X
45     F1     P4    Y   Y,Z,X
45     F1     P4    A   Y,Z,X
45     F1     P1    F   Y,Z,X
45     F1     P1    H   Y,Z,X

所以这里的想法是针对每个组( claim 、失败和零件),如果“代码”中的“任何”代码与“匹配代码”列中的代码列表匹配,那么组应该将匹配列设置为 True。

所以预期的输出应该如下:

Claim failure Part Match 
23     F1     P1    TRUE   
23     F2     P2    FALSE  
45     F1     P4    TRUE
45     F1     P1    FALSE

此 data.table 的大小非常大,因此需要优化的解决方案。 请帮助:)

最佳答案

...以及使用 data.table 的解决方案。

library(data.table)
grepl_v <- Vectorize(grepl)
DT[, .(Match = any(grepl_v(code, matchcode))), by = .(Claim, failure, Part)]
#   Claim failure Part Match
#1:    23      F1   P1  TRUE
#2:    23      F2   P2 FALSE
#3:    45      F1   P4  TRUE
#4:    45      F1   P1 FALSE

数据

DT <- fread("Claim failure Part code matchcode
23     F1     P1    A   B,A,C
23     F1     P1    D   B,A,C
23     F2     P2    D   B,A,C
23     F2     P2    E   B,A,C
45     F1     P4    X   Y,Z,X
45     F1     P4    Y   Y,Z,X
45     F1     P4    A   Y,Z,X
45     F1     P1    F   Y,Z,X
45     F1     P1    H   Y,Z,X")

关于r - 如何按组或类别(按组)将列中的值与 R 中同一数据框中的其他列(具有多个值)匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53243908/

相关文章:

r - 更改复合图例标题

r - 如何在R中将简体中文转换为繁体中文?

r - 在 R 中,此警告消息“已回收剩余部分”是什么意思?

r - data.table 用 NA 替换一个值

r - 使用 := in data. 表按组分配多列

r - 在 R 中的 data.table 中选择 NA

r - 多列标签或名称

r - 使用 R 在矩阵中的特定位置插入行

r - 对于向量,确定索引,超过该索引的所有值均为 NA(或某个值)

r - 使用 group by 对 data.table 列进行子集化