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

如何在R语言中提取数据框字符型年份列的最值及年份数量?

处理字符型年份列:提取最小值、最大值及年份数量

给定如下R数据框,其中yr列是以逗号分隔的字符型年份数据,需要为每行计算年份的最小值(min_yr)、最大值(max_yr)以及年份的数量(nYears):

df <- data.frame(id = 1:4,
                 yr = c("1543,860,2023",
                        "2019,2018,2006,2007",
                        "1998,2012,2000,2020",
                        "2000"))

方法一:使用tidyverse工具链

library(tidyverse)

df_result <- df %>%
  mutate(yr_list = str_split(yr, ","),
         yr_numeric = map(yr_list, as.numeric),
         min_yr = map_dbl(yr_numeric, min),
         max_yr = map_dbl(yr_numeric, max),
         nYears = map_int(yr_numeric, length)) %>%
  select(-yr_list, -yr_numeric)

print(df_result)

方法二:使用基础R实现

df_result <- df
df_result$yr_list <- strsplit(df_result$yr, ",")
df_result$yr_numeric <- lapply(df_result$yr_list, as.numeric)
df_result$min_yr <- sapply(df_result$yr_numeric, min)
df_result$max_yr <- sapply(df_result$yr_numeric, max)
df_result$nYears <- sapply(df_result$yr_numeric, length)
df_result <- df_result[, !names(df_result) %in% c("yr_list", "yr_numeric")]

print(df_result)

两种方法都会得到如下结果:

id                   yr  min_yr  max_yr  nYears
 1        1543,860,2023     860    2023       3
 2  2019,2018,2006,2007    2006    2019       4
 3  1998,2012,2000,2020    1998    2020       4
 4                 2000    2000    2000       1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:25:22