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

R语言如何用strptime()转换日期时间文本、统计周频次以绘制散点图

错误原因排查

你运行报错的核心问题是strptime()的格式参数与输入的日期字符串不匹配:

  • 格式中用了点号., 但实际日期的星期、月份之间是空格分隔
  • 仅定义了星期、月份两个匹配项,但输入的字符串还包含日、时分秒、年份字段,格式长度完全不匹配,因此会抛出输入字符串过长的错误。

完整实现步骤

1. 日期时间正确解析

首先读取文件内容,用完整匹配规则解析日期,注意如果是中文系统环境,需要先修改时间 locale 才能正确识别英文的星期、月份缩写:

# 【Windows系统】修改时间区域为英文,避免识别英文日期失败
Sys.setlocale("LC_TIME", "English")
# 【Mac/Linux系统】用下面这句替代
# Sys.setlocale("LC_TIME", "en_US.UTF-8")

# 读取dates.txt所有行
date_lines <- readLines("dates.txt")
# 完整匹配格式:%a=星期缩写 %b=月份缩写 %d=日期 %T=时分秒 %Y=4位年份
parsed_dates <- strptime(date_lines, format = "%a %b %d %T %Y")

新手更推荐用lubridate包,不需要手动写匹配格式,代码更简洁:

# 首次使用先安装包
install.packages("lubridate")
library(lubridate)
parsed_dates <- dmy_hms(date_lines)

2. 按周分组统计频次

用strftime的格式符提取周数,这里可以根据你的周定义规则调整格式符:

  • 用%W:周一为一周起始,每年1月1日所在周为第0周
  • 用%U:周日为一周起始,每年1月1日所在周为第0周
# 生成带年份的周标识,避免跨年周数重复
week_labels <- strftime(parsed_dates, "%Y-%W")
# 统计每周的出现频次
week_count <- as.data.frame(table(week_labels))
colnames(week_count) <- c("周标识", "频次")
# 生成连续周序号作为散点图x轴
week_count$周序号 <- 1:nrow(week_count)

3. 绘制散点图

直接用R基础绘图函数即可输出你需要的效果:

plot(
  x = week_count$周序号,
  y = week_count$频次,
  xlab = "周数",
  ylab = "频次",
  pch = 16, # 散点样式为实心圆点
  col = "darkblue",
  cex = 1.2 # 散点大小
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:03:03