计算v2x_polyarchy年度相对下降时lag函数失效问题咨询
问题原因及解决方法
可能的原因1:分组内数据未按年份排序
lag函数是基于数据的当前行顺序提取前一行值,如果你的数据在分组后,每个demreg_id下的观测不是按year升序排列,就会导致lag无法正确获取上一年的v2x_polyarchy值,甚至可能取到当前行的数据,最终计算结果为0。
解决方法
在分组后、计算新变量前,先对每个分组内的数据按year排序:
episodes_demreg <- episodes_demreg %>% group_by(demreg_id) %>% arrange(year, .by_group = TRUE) %>% # 确保分组内按年份升序排列 mutate(decline_year_relative = ((v2x_polyarchy - lag(v2x_polyarchy)) / lag(v2x_polyarchy)) * 100)
可能的原因2:lag函数命名冲突
如果你的R环境中加载了data.table等其他包含同名lag函数的包,可能会优先调用这些包的lag函数,而它们的行为与dplyr的lag不同,无法正确识别分组内的前一行数据。
解决方法
明确指定使用dplyr的lag函数,用dplyr::lag:
episodes_demreg <- episodes_demreg %>% group_by(demreg_id) %>% arrange(year, .by_group = TRUE) %>% mutate(decline_year_relative = ((v2x_polyarchy - dplyr::lag(v2x_polyarchy)) / dplyr::lag(v2x_polyarchy)) * 100)
验证步骤
可以先检查分组内的数据顺序,确认是否按年份排列:
episodes_demreg %>% group_by(demreg_id) %>% print(n = Inf)
内容的提问来源于stack exchange,提问作者kwalz
相关产品推荐
相关产品推荐

