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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:20:30