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

Windows下R的cut()处理datetime丢失时间戳,Ubuntu正常求助

R中cut()函数跨Windows/Ubuntu平台的时间格式化不一致问题

我有一个依赖时间分箱切割datetime的R函数,在Windows与Ubuntu平台表现不一致,以下是可复现的示例:

datetimes <- seq(from = as.POSIXct("2023-01-02 23:00:00", tz = "UTC"),
                  to = as.POSIXct("2023-01-03 01:00:00", tz = "UTC"),
                  by = "30 min")
# 应用cut函数
cut_times <- cut(datetimes, breaks = "1 hour")
# 转为数据框方便查看
df <- data.frame(original_times = datetimes, cut_times = cut_times)
# 打印数据框
print(df)

Windows平台输出:

original_times           cut_times
1 2023-01-02 23:00:00 2023-01-02 23:00:00
2 2023-01-02 23:30:00 2023-01-02 23:00:00
3 2023-01-03 00:00:00          2023-01-03
4 2023-01-03 00:30:00          2023-01-03
5 2023-01-03 01:00:00 2023-01-03 01:00:00

可以看到Windows中部分cut结果丢失了时间戳(如显示2023-01-03而非预期的2023-01-03 00:00:00),而Ubuntu平台的输出符合预期:

datetimes <- seq(from = as.POSIXct("2023-01-02 23:00:00", tz = "UTC"), 
                 to = as.POSIXct("2023-01-03 01:00:00", tz = "UTC"), 
                 by = "30 min")
# 应用cut函数
cut_times <- cut(datetimes, breaks = "1 hour")
# 转为数据框方便查看
df <- data.frame(original_times = datetimes, cut_times = cut_times)
# 打印数据框
print(df)

Ubuntu平台输出:

original_times           cut_times
1 2023-01-02 23:00:00 2023-01-02 23:00:00
2 2023-01-02 23:30:00 2023-01-02 23:00:00
3 2023-01-03 00:00:00 2023-01-03 00:00:00
4 2023-01-03 00:30:00 2023-01-03 00:00:00
5 2023-01-03 01:00:00 2023-01-03 01:00:00

由于cut()会将结果转为factor,后续需通过as.POSIXct(as.character())转换回datetime类型,但Windows下该操作会丢失时间精度:

as.POSIXct(as.character(df$cut_times), tz="UTC")

Windows平台输出:

[1] "2023-01-02 UTC" "2023-01-02 UTC" "2023-01-03 UTC" "2023-01-03 UTC"
[5] "2023-01-03 UTC"

平台会话信息

Windows会话信息

sessioninfo::session_info()
─ Session info ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.0 (2023-04-21 ucrt)
 os       Windows 11 x64 (build 22000)
 system   x86_64, mingw32
 ui       RTerm
 language (EN)
 collate  English_United States.utf8
 ctype    English_United States.utf8
 tz       America/New_York
 date     2023-07-19
 pandoc   NA

─ Packages ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 cli           3.6.1   2023-03-23 [1] CRAN (R 4.3.0)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.3.1)

 [1] C:/Users/choilab/R/R-4.3.0/library

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Ubuntu会话信息

sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.1.2 (2021-11-01)
 os       Ubuntu 22.04.2 LTS
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/New_York
 date     2023-07-19
 pandoc   2.9.2.1 @ /usr/bin/pandoc

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 cli           3.6.1   2023-03-23 [1] CRAN (R 4.1.2)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.1.2)

 [1] /home/matias/R/x86_64-pc-linux-gnu-library/4.1
 [2] /usr/local/lib/R/site-library
 [3] /usr/lib/R/site-library
 [4] /usr/lib/R/library

──────────────────────────────────────────────────────────────────────────────

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:36:00