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

R语言mutate与str_trunc处理年份字符串未得到预期输出问题

问题排查与解决方案

报错原因说明

  • NAs introduced by coercion报错:stringr::str_trunc()的side参数使用错误。side = "left"表示截断字符串左侧内容、保留右侧指定长度的字符,你使用的2018/19这类财年字符串长度为5,截断到4位后得到的是类似8/19的非纯数字内容,转换整数时就会生成NA。你需要保留左侧4位年份前缀,应该设置side = "right",代表截断右侧多余内容、保留左侧指定长度。
  • 单独运行代码提示对象未找到:Start_year是数据框data的内置列,不是全局环境中独立存在的变量,单独运行代码时R无法在全局环境定位到对应对象,需要通过data$Start_year的形式调用数据框的列。

可行修复方案

方案1:修正str_trunc参数

select_data <- data %>%
  select(Product, Start_year, Number, Amount) %>%
  mutate(
    Avg_paid = Amount/Number,
    Start_year_short = as.integer(str_trunc(Start_year, 4, side = "right"))
  )

方案2:正则提取(兼容性更强)

通过正则匹配字符串开头的4位数字,不受财年分隔符、字符串长度异常影响,适配性更高:

library(stringr)
select_data <- data %>%
  select(Product, Start_year, Number, Amount) %>%
  mutate(
    Avg_paid = Amount/Number,
    Start_year_short = as.integer(str_extract(Start_year, "^\\d{4}"))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:03