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

如何用read_csv解析Year-B1/Year-B2格式的半年期时间变量

处理CSV中的半年期时间变量

由于col_date()的格式参数仅支持标准日期格式占位符(比如%Y代表年份、%m代表月份),无法直接解析Year-B1/Year-B2这种自定义格式,因此需要分两步处理:先读取为字符型,再转换为目标格式。

步骤1:读取CSV文件

先将time列读取为字符型,避免解析错误:

library(tidyverse)

tb_r <- read_csv("tb.csv", col_types = cols(
  time = col_character(),
  country = col_character(),
  value = col_double()
))

步骤2:转换时间格式

提供两种方案,按需选择:

方案一:转为日期对象(支持后续时间运算)

如果需要后续对时间进行排序、筛选等操作,建议先转为标准日期,再格式化展示:

tb_r_processed <- tb_r %>%
  mutate(
    # 将B1映射为6月30日,B2映射为12月31日,转为日期类型
    date = as.Date(str_replace(time, "B1", "-06-30") %>% str_replace("B2", "-12-31")),
    # 格式化为"Year:Jun"/"Year:Dec"样式
    time = format(date, "%Y:%b")
  ) %>%
  select(time, country, value) # 保留需要的列

方案二:直接字符串替换(仅用于展示)

如果不需要日期类型,仅需修改显示格式,直接替换字符串即可:

tb_r_processed <- tb_r %>%
  mutate(
    time = str_replace(time, "B1", ":Jun") %>% str_replace("B2", ":Dec")
  )

最终结果

处理后的数据框如下:

# A tibble: 4 × 3
  time     country value
  <chr>    <chr>   <dbl>
1 2021:Jun USA         3
2 2021:Dec USA         5
3 2022:Jun USA         4
4 2022:Dec USA         7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:40:38