如何在dplyr中把1964-2017年份列转换为0-53数值范围并新建列?
使用dplyr实现年份到0-53数值范围的映射
当然可以用dplyr轻松搞定这个需求!核心逻辑其实非常直观:因为你的年份范围是1964到2017,直接用年份减去起始年份1964,就能得到从0开始的连续数值(2017-1964=53,刚好匹配你要的范围)。
基础实现代码
假设你的数据框名为df,年份列名为year,可以用mutate()函数直接生成新列:
library(dplyr) df <- df %>% mutate(year_mapped = year - 1964)
更严谨的版本(处理异常年份)
如果你的数据里可能存在超出1964-2017范围的年份,建议用case_when()做条件判断,把不符合的年份标记为NA:
df <- df %>% mutate(year_mapped = case_when( between(year, 1964, 2017) ~ year - 1964, TRUE ~ NA_real_ # 不在目标区间的年份设为缺失值 ))
验证结果
- 当
year = 1964时,year_mapped = 0 - 当
year = 2017时,year_mapped = 53 - 所有中间年份都会得到连续的0-53之间的数值,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Amleto
相关产品推荐
相关产品推荐

