R语言按id分组取每组首个type='y'的count值新建newcount列
R实现分组新增匹配值列的方案
方案1:dplyr包实现(tidyverse生态常用,代码易读)
这是最简便的实现方式,逻辑直接对应需求描述:
# 加载dplyr包,未安装先运行 install.packages("dplyr") library(dplyr) df <- df %>% # 按id字段分组 group_by(id) %>% # 每组取第一个type为'y'的行对应的count值赋值给全组newcount mutate(newcount = first(count[type == "y"])) %>% # 操作完成后取消分组,避免影响后续数据处理 ungroup()
方案2:基础R实现(无需安装第三方包)
适合不想依赖第三方包的场景:
# 按id拆分数据框处理后再合并 df_split <- split(df, df$id) df <- unsplit(lapply(df_split, function(sub_df) { sub_df$newcount <- sub_df$count[sub_df$type == "y"][1] return(sub_df) }), df$id)
两种方案运行后得到的结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Yebelay Berehan
相关产品推荐
相关产品推荐

