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

基于最大值条件在R中修正错误年龄数据的方法求助

修正年龄计算的解决方案

你的核心问题是没利用年份差来计算真实年龄——原数据里每个分组的age都是最后记录年份的正确年龄,所以只需要基于每个分组的最大年份,用「最终年龄 - (最终年份 - 当前年份)」就能得到对应年份的真实年龄。

修正后的dplyr代码

library(dplyr)

new_data = problem_data %>% 
    group_by(name) %>% 
    mutate(
        max_year = max(year),          # 获取每个用户的最后记录年份
        real_age = age - (max_year - year)  # 用最终年龄减去年份差
    ) %>% 
    ungroup() %>%  # 可选,取消分组
    select(-max_year)  # 移除中间变量

运行结果

name year age real_age
1  john 2010  21       16
2  john 2011  21       17
3  john 2015  21       21
4  alex 2014  55       53
5  alex 2016  55       55
6 peter 2010  61       58
7 peter 2011  61       59
8 peter 2012  61       60
9 peter 2013  61       61

原代码无效的原因

你之前的代码用age - lag(age),但每个用户的age列值完全相同,所以差值必然是0,根本没用到年份的关键信息。我们需要的是基于年份差的计算,而非同一列的前后行差值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:20:35