根据 id 向量中的匹配进行过滤
filter based on match in vector by id
我正在寻找 data.table
一个简单问题的解决方案。我有这样的数据:
library(data.table)
data <- data.table(
id = c(1,1,2,3,3),
code = c("A1","A3", "B1", "A2", "B2")
)
我希望找到其中包含代码的唯一 ID
codes1 <- c("A1", "A2", "A3")
或
codes2 <- c("B1", "B2", "B3")
在两个单独的行上:可能的匹配项是那些具有与 codes1
或 codes2
中的元素匹配的代码的唯一 ID 对于第一行唯一 ID 和与 codes1
或 codes2
中的元素匹配的代码,用于该唯一 ID 的第二行(但如果代码包含在 codes1
第一行,第二行必须是codes2
,反之亦然)
所以我想这样结束:
data_want <- data.table(
id = c(1,2,3),
match = c(0,0,1)
)
我们可以使用 %in%
和 any
library(data.table)
data[, .(match = +(any(codes1 %in% code) & any(codes2 %in% code))), by = id]
-输出
id match
<num> <int>
1: 1 0
2: 2 0
3: 3 1
我正在寻找 data.table
一个简单问题的解决方案。我有这样的数据:
library(data.table)
data <- data.table(
id = c(1,1,2,3,3),
code = c("A1","A3", "B1", "A2", "B2")
)
我希望找到其中包含代码的唯一 ID
codes1 <- c("A1", "A2", "A3")
或
codes2 <- c("B1", "B2", "B3")
在两个单独的行上:可能的匹配项是那些具有与 codes1
或 codes2
中的元素匹配的代码的唯一 ID 对于第一行唯一 ID 和与 codes1
或 codes2
中的元素匹配的代码,用于该唯一 ID 的第二行(但如果代码包含在 codes1
第一行,第二行必须是codes2
,反之亦然)
所以我想这样结束:
data_want <- data.table(
id = c(1,2,3),
match = c(0,0,1)
)
我们可以使用 %in%
和 any
library(data.table)
data[, .(match = +(any(codes1 %in% code) & any(codes2 %in% code))), by = id]
-输出
id match
<num> <int>
1: 1 0
2: 2 0
3: 3 1