使用data.table拆分字符串并提取每行唯一字符的方法求助
解决方案
针对200万行的大数据集,推荐使用向量化操作实现高效处理,避免循环或低效逐行处理:
library(data.table) dt <- data.table(x = c("a,b,b,c,NA","b,b,NA,c","a,b,c,c,c,d")) # 直接修改原列,高效完成拆分-去重-拼接 dt[, x := sapply(strsplit(x, ","), function(y) paste(unique(y), collapse = ","))]
运行后得到目标结果:
x 1: a,b,c,NA 2: b,NA,c 3: a,b,c,d
代码说明
strsplit(x, ","):将每行的字符串按逗号拆分为字符向量,属于向量化操作,处理大数据集的效率远高于逐行循环sapply(..., function(y) paste(unique(y), collapse = ",")):对每个拆分后的向量提取唯一值,再用逗号拼接回字符串dt[, x := ...]:利用data.table的原地修改特性,避免额外数据复制,适合百万级大表的内存优化
内容的提问来源于stack exchange,提问作者98198128
相关产品推荐
相关产品推荐

