假设我有一个数据表:
dt <- data.table(x = c("a,b,b,c,NA","b,b,NA,c","a,b,c,c,c,d"))
dt
x
1: a,b,b,c,NA
2: b,b,NA,c
3: a,b,c,c,c,d
现在,对于每一行,我想拆分 x 列,提取所有唯一字符并将它们粘贴在一起,这样我就得到:
x
1: a,b,c,NA
2: b,NA,c
3: a,b,c,d
到目前为止我已经尝试过了,但之后我陷入了困境,另一个问题是我的数据集包含超过 200 万个观察值。
dt[, tstrsplit(x, ",")]
V1 V2 V3 V4 V5 V6
1: a b b c NA <NA>
2: b b NA c <NA> <NA>
3: a b c c c d
dt[, x2 := lapply(strsplit(x, ","), function(y) paste0(unique(y), collapse = ","))]
# x x2
# 1: a,b,b,c,NA a,b,c,NA
# 2: b,b,NA,c b,NA,c
# 3: a,b,c,c,c,d a,b,c,d