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

如何统计R语言矩阵中日期时间字符串的年、月、日出现次数?

高效统计矩阵中年、月、日出现次数的方案

针对你提到的固定格式日期字符串(YYYY-MM-DD_HHMM),结合大型矩阵的效率需求,以下是两种可行方案,同时解答你关于table()函数的疑问:


方案1:字符串拆分+table()(基础R,高效首选)

因为日期格式完全固定,直接用向量化的字符串截取操作提取年、月、日,再配合table()统计频次,是处理大型数据最快的方式,无需额外依赖包。

步骤示例:

# 先提取矩阵中的日期列(根据你的数据调整列索引,比如第一个示例是第3列,第二个dput示例是第2列)
date_col <- data[, ncol(data)]

# 提取年、月、日
years <- substr(date_col, 1, 4)   # 前4位是年份
months <- substr(date_col, 6, 7)  # 第6-7位是月份
days <- substr(date_col, 9, 10)   # 第9-10位是日期

# 用table()统计频次
table(years)
table(months)
table(days)

测试你的示例数据:

以第一个示例为例,运行后会得到:

# 年频次
# years
# 2021 2022 
#    1    4 

# 月频次
# months
# 01 03 09 12 
#  1  2  1  1 

# 日频次
# days
# 01 09 10 13 
#  2  1  1  1 

方案2:日期对象解析+table()(灵活扩展)

如果后续需要进行更多日期相关操作(比如计算季度、日期差等),可以用lubridate包将字符串解析为日期对象,再提取年、月、日统计频次。

步骤示例:

# 安装并加载lubridate
install.packages("lubridate")
library(lubridate)

# 提取日期列
date_col <- data[, ncol(data)]

# 解析为日期时间对象(匹配YYYY-MM-DD_HHMM格式)
date_obj <- ymd_hm(date_col)

# 提取年、月、日
years <- year(date_obj)
months <- month(date_obj)
days <- day(date_obj)

# 统计频次
table(years)
table(months)
table(days)

关于table()的疑问

table()本身是统计频次的合适工具,但不能直接对原日期字符串使用(那样统计的是完整日期时间的频次,而非年、月、日单独的频次)。必须先将年、月、日从字符串中提取为独立向量,再传入table()。


方案对比

  • 若仅需统计年、月、日频次:优先选方案1,字符串截取是向量化操作,处理大型矩阵的速度远快于日期解析。
  • 若需后续日期操作:选方案2,日期对象能支持更多灵活的日期计算,性能差异在大多数场景下可忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:18:15