拆分字符串并使用 data.table 查找每行的唯一字符

问题描述 投票:0回答:1

假设我有一个数据表:

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
r data.table
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.