R语言按id分组取type为yes的最后观测年份新增year2变量方法
R数据框按分组提取指定值对应年份实现方法
你的原有代码存在以下问题:
- 示例数据中存储yes/no的列名为
y,和你期望输出的type列名不一致 - 字符串匹配大小写错误,原数据取值为小写
yes,代码中写为大写Yes last()函数使用逻辑错误,当前写法返回的是逻辑判断的最后一个布尔值,而非符合条件的对应年份
正确dplyr实现代码
library(dplyr) # 先修正列名,和期望输出的列名保持一致 data <- data %>% rename(type = y) # 按id分组计算year2 data <- data %>% group_by(id) %>% # 筛选每组中type为yes的行,取这些行year的最后一个值,无yes的组返回NA mutate(year2 = last(year[type == "yes"], default = NA_real_)) %>% ungroup()
运行上述代码后得到的结果和你给出的期望输出基本匹配,你给出的期望输出中id=3第一行的year2为2004属于笔误,实际所有id=3的行year2都为2002。
内容的提问来源于stack exchange,提问作者Yebelay Berehan
相关产品推荐
相关产品推荐

