使用R语言dplyr对比各国1952年与其他年份的预期寿命
R Tibble管道操作实现跨年份预期寿命对比指导
完整单行管道实现代码
gap %>% group_by(country) %>% mutate(lifeExp_1952 = lifeExp[year == 1952], lifeExp_diff = lifeExp - lifeExp_1952) %>% ungroup()
逻辑拆解
group_by(country):按国家维度分组,后续所有操作都会在每个国家的独立数据子集内执行,避免不同国家的数据混淆mutate(...):保留原表所有数据的前提下新增计算列:lifeExp_1952:提取当前国家子集内年份为1952年的预期寿命值,因为已经按国家分组,每个国家的所有行都会统一填充本国1952年的基准值lifeExp_diff:直接计算当前年份预期寿命与1952年基准值的差值,完成对比需求,若不需要差值可以省略该参数
ungroup():解除分组状态,避免后续其他操作受遗留分组逻辑影响
原有代码问题说明
你之前的写法先按year和lifeExp分组,再筛选1952年数据,会直接过滤掉其他年份的所有记录,自然无法关联其他年份数据做对比。不需要提前筛选1952年数据,在分组内直接提取对应年份的数值填充到所有行即可实现需求。
内容的提问来源于stack exchange,提问作者noahjaccard
相关产品推荐
相关产品推荐

