如何使用data.table筛选col2因子值完全相同的id?
筛选col2值完全相同的id的方法
针对你提供的data.table数据集,要筛选出对应col2因子值完全一致的id,可以用以下两种高效的data.table实现方式:
方法1:分步筛选
先提取符合条件的id,再过滤原数据:
library(data.table) # 计算每组id对应的col2唯一值数量,筛选出唯一值数量为1的id valid_ids <- test[, .(n_unique = uniqueN(col2)), by = id][n_unique == 1, id] # 用有效id过滤原数据集 filtered_test <- test[id %in% valid_ids]
方法2:链式一步操作
直接在分组时判断并保留符合条件的组:
filtered_test <- test[, if (uniqueN(col2) == 1) .SD, by = id]
说明
uniqueN()是data.table的高效函数,能直接计算向量(包括因子)的唯一值数量,比length(unique())性能更优.SD代表当前分组下的所有数据行,仅当分组内col2的唯一值数量为1时,才保留该组的全部行
运行后会得到预期结果:
id col2 1: 1 A 2: 1 A
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

