我在 d 列中有一个“第一”查找表。例如,患者第一次因某种特定疾病入院。我想在多个其他条件下通过 data.table 将其连接回主数据框架。
我的问题是,不幸的是,主 data.table 可能有多个具有相同连接标准的记录,导致连接后每个患者有多个“第一”。现实世界的数据是混乱的,朋友们!
是否可以仅对第一个匹配记录进行 {data.table} 连接?
这与这个问题类似,但多重匹配位于主数据表上。我认为mult只有当表上有多个条目被加入时才有效。
代表:
library(data.table)
set.seed(1724)
d1 <- data.table(a = c(1, 1, 1),
b = c(1, 1, 2),
c = sample(1:10, 3))
d2 <- data.table(a = 1, b = 1, d = TRUE)
d2[d1, on = c("a", "b")]
a b d c
1: 1 1 TRUE 4
2: 1 1 TRUE 8
3: 1 2 NA 2
Run Code Online (Sandbox Code Playgroud)
期望的输出
a b d c
1: 1 1 TRUE 4
2: 1 1 NA 8
3: 1 2 NA 2
Run Code Online (Sandbox Code Playgroud)
一种方法是将值转换为NA连接后。
library(data.table)
d3 <- d2[d1, on = c("a", "b")]
d3[, d:= replace(d, seq_len(.N) != 1, NA), .(a, b)]
d3
# a b d c
#1: 1 1 TRUE 4
#2: 1 1 NA 8
#3: 1 2 NA 2
Run Code Online (Sandbox Code Playgroud)