You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按ID分组基于Eval列条件创建新列的实现方法

R 按分组判断列是否存在指定布尔值的实现方法

核心逻辑:需求等价于判断每个ID分组内,Eval列取反后是否存在至少一个TRUE值,直接调用any()函数即可实现该判断。

方法1:使用dplyr包(tidyverse生态常用语法)

library(dplyr)
result <- df %>%
  group_by(ID) %>%
  summarise(x = any(!Eval)) %>%
  ungroup()

方法2:Base R实现(无需加载额外依赖包)

result <- aggregate(Eval ~ ID, data = df, FUN = function(x) any(!x))
colnames(result) <- c("ID", "x")

方法3:data.table实现(适合处理大数据量场景,性能更高)

library(data.table)
setDT(df)
result <- df[, .(x = any(!Eval)), by = ID]

以上三种方法输出的结果均符合要求:

ID     x
1  1 FALSE
2  2  TRUE
3  3  TRUE
4  4  FALSE

内容的提问来源于stack exchange,提问作者jo_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:36:03