R语言按id分组后统计组内出生年份重复次数的实现咨询
实现方案
方案1:tidyverse 实现
适合习惯dplyr语法的场景,20万行数据运行无压力:
library(tidyverse) df_result <- df %>% group_by(id) %>% mutate(n = { # 统计当前id下各出生年份的出现次数 year_count <- table(birth_year) # 取最大出现次数,若最大值为1说明所有年份唯一,返回0 max_count <- max(year_count) ifelse(max_count == 1, 0, max_count) }) %>% ungroup()
方案2:data.table 实现
针对大数据量优化,运行速度更快,更适合10万行以上的数据集:
library(data.table) # 转换为data.table格式 setDT(df) # 先统计每个id+年份组合的出现次数,再按id取最大次数做判断 df[, cnt := .N, by = .(id, birth_year)][ , n := fifelse(max(cnt) == 1, 0, max(cnt)), by = id ][, cnt := NULL] # 删除临时计数列
两种方案运行后得到的结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Paula
相关产品推荐
相关产品推荐

