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

R语言中使用Group by与条件规则修改dataframe的completion字段

R语言实现分组统一修改completion字段的方案

核心逻辑:按name分组后,若组内存在任意completion=0的记录,则全组completion统一设为0,否则保留为1。

方法1:使用dplyr包(tidyverse生态常用,易读性高)

# 加载包
library(dplyr)

# 计算逻辑
df_completed <- df_school %>%
  group_by(name) %>%
  mutate(completion = ifelse(any(completion == 0), 0, 1)) %>%
  ungroup()

说明:ifelse(any(completion == 0), 0, 1)也可以替换为as.integer(!any(completion == 0)),效果完全一致

方法2:使用Base R(无需安装第三方包)

df_completed <- df_school
df_completed$completion <- ave(
  df_completed$completion, 
  df_completed$name, 
  FUN = function(x) ifelse(any(x == 0), 0, 1)
)

方法3:使用data.table包(性能优先,适合大数据集)

# 加载包
library(data.table)

# 转换为data.table对象并计算
setDT(df_school)
df_school[, completion := ifelse(any(completion == 0), 0, 1), by = name]

# 若需要转换回data.frame格式,执行下行代码
# setDF(df_school)

以上三种方法均可得到你给出的预期输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:06:04