如何在data.table中按组检验字符列值是否全部相等
检验data.table分组内指定列的所有字符值是否相同
首先创建示例数据:
library(data.table) DTT <- data.table(id=rep(seq(1:1000), each = 1000), CHAR=rep("A",10000), key="id")
方法1:通过唯一值数量判断
利用uniqueN()函数统计每个分组内指定列的唯一值数量,若数量为1则说明所有值相同:
# 获取每个分组的检验结果 group_result <- DTT[, .(all_same = uniqueN(CHAR) == 1), by = id] # 验证所有分组是否都满足条件 all(group_result$all_same)
运行上述代码会返回TRUE,符合示例数据的预期。
方法2:对比分组内所有值与首值
通过判断分组内所有值是否与第一个值完全一致来验证:
group_result2 <- DTT[, .(all_same = all(CHAR == CHAR[1])), by = id] all(group_result2$all_same)
这种方法逻辑直观,对字符型、数值型数据都适用。
内容的提问来源于stack exchange,提问作者user3647872
相关产品推荐
相关产品推荐

