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

R语言将df索引列转为普通列并将字符列转换为日期格式的方法

R语言行索引转日期列最简实现

方法1:tidyverse 套件(代码最简洁)

依赖tidyverse和lubridate包,代码可读性高:

library(tidyverse)
library(lubridate)

df_result <- df %>%
  # 将行索引转换为普通列,列名设为date_raw
  rownames_to_column("date_raw") %>%
  mutate(
    # 提取行名字符串中até后面的日期片段
    date_str = str_extract(date_raw, "(?<=até )\\d{2}\\w{3}\\d{2}"),
    # 葡萄牙语日月年格式转日期类型
    date = dmy(date_str),
    # 按需求偏移1天并调整为年/月/日格式,不需要偏移可删除+ days(1)
    date = format(date + days(1), "%Y/%m/%d")
  ) %>%
  # 把日期列放到第一列,删除中间辅助列
  select(date, everything(), -date_raw, -date_str)

方法2:基础R实现(无需安装第三方包)

用原生函数完成,不需要额外安装依赖:

# 行索引转普通列
df$date_raw <- rownames(df)
# 提取日期片段
df$date_str <- sub(".*até (\\d{2}\\w{3}\\d{2}).*", "\\1", df$date_raw)
# 葡萄牙语格式转日期,根据系统环境调整locale参数即可
df$date <- as.Date(df$date_str, format = "%d%b%y", locale = "pt_BR.UTF-8")
# 偏移1天并调整格式,不需要偏移可删除+1
df$date <- format(df$date + 1, "%Y/%m/%d")
# 将日期列放到最前面,删除辅助列
df <- df[, c("date", setdiff(colnames(df), c("date", "date_raw", "date_str")))]
# 可选:清空行索引
rownames(df) <- NULL

适配说明

你的行索引中月份为葡萄牙语缩写(Ago=8月、Set=9月),上述代码已适配该格式识别。如果生成的日期和你预期的交易日不一致,调整偏移天数或使用工作日偏移函数即可。

内容的提问来源于stack exchange,提问作者Vinícius Felizatti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:18:03