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

RStudio中拆分字符型日期列为年、月、日三列的方法求助

拆分字符型日期列为年、月、日三列

针对你提供的Jul 1, 2004格式的字符型日期列,这里提供几种可靠的解决方案:

方法1:基础R实现

先将字符转为标准日期类型,再提取年、月、日:

# 转换为日期格式(%b对应月份缩写,%d对应日期,%Y对应4位年份)
fifa21_raw_data$Joined_date <- as.Date(fifa21_raw_data$Joined, format = "%b %d, %Y")

# 提取年、月、日
fifa21_raw_data$Year <- format(fifa21_raw_data$Joined_date, "%Y")
# 若需要数字月份,将"%b"改为"%m"
fifa21_raw_data$Month <- format(fifa21_raw_data$Joined_date, "%b")
# 若需要不带前导零的日期,可转为整数:as.integer(format(...))
fifa21_raw_data$Day <- format(fifa21_raw_data$Joined_date, "%d")

方法2:tidyverse + lubridate(推荐,更简洁)

借助lubridate的日期解析函数,无需手动指定格式:

# 先安装并加载包(首次使用需安装)
install.packages("tidyverse")
library(tidyverse)
library(lubridate)

# 管道式处理
fifa21_raw_data <- fifa21_raw_data %>%
  mutate(
    Joined_date = mdy(Joined), # mdy自动识别"月-日-年"格式的字符日期
    Year = year(Joined_date),
    # label=TRUE返回月份名称缩写,改为FALSE则返回数字;abbr=FALSE返回全称
    Month = month(Joined_date, label = TRUE, abbr = TRUE),
    Day = day(Joined_date)
  )

方法3:直接字符拆分(不推荐,无日期有效性验证)

如果不想转换为日期类型,可直接按分隔符拆分:

library(tidyverse)

fifa21_raw_data <- fifa21_raw_data %>%
  # 按空格或", "拆分,convert=TRUE自动将日、年转为数值类型
  separate(Joined, into = c("Month", "Day", "Year"), sep = " |, ", convert = TRUE)

注意:方法3无法验证日期的合法性(比如"Feb 30, 2024"这类无效日期会直接拆分),建议优先使用前两种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:22:34