R语言 日期处理的常见问题

文章讲述了在R编程中处理包含不同格式(如2023-11-2113:00:23和2023-11-21)的日期时,使用`anytime::anytime()`和`as.Date()`函数的技巧,强调了指定时区以避免默认时区不一致导致的时间错误。
摘要由CSDN通过智能技术生成

如果一列中有多种格式的日期,例如"2023-11-21 13:00:23"和"2023-11-21",很容易报错。以下可通用

ymd(anytime::anytime(dt_omics_perm$DATE))
as.Date(anytime::anytime(dt_omics_perm$DATE))

注意,对时间格式处理时,最好重新ymd或ymd_hms或as.Date(tz=“”)。否则有时会有默认时区不一致,导致时间出错。

> ymd(anytime::anytime(dt_omics_perm$DATE)) %>% head
[1] "2019-06-26" "2019-07-26" "2019-07-10" "2019-07-26" "2020-09-21"
[6] "2019-11-14"
> as.Date(anytime::anytime(dt_omics_perm$DATE,tz="")) %>% head
[1] "2019-06-25" "2019-07-25" "2019-07-09" "2019-07-25" "2020-09-20"
[6] "2019-11-13"
> dt_omics_perm$DATE %>% head
[1] "2019-06-26" "2019-07-26" "2019-07-10" "2019-07-26" "2020-09-21"
[6] "2019-11-14"
> (anytime::anytime(dt_omics_perm$DATE,tz="")) %>% head
[1] "2019-06-26 CST" "2019-07-26 CST" "2019-07-10 CST" "2019-07-26 CST"
[5] "2020-09-21 CST" "2019-11-14 CST"
> as.Date(anytime::anytime(dt_omics_perm$DATE),tz="") %>% head
[1] "2019-06-26" "2019-07-26" "2019-07-10" "2019-07-26" "2020-09-21"
[6] "2019-11-14"

附录,如果两个格式都Date,那么不加tz=“”也不会出现这样的问题

> difftime(dt_omics_ckdp_meta$INDEX_DATE[1:2],as.Date(diag.icd[[1]]$CONDITION_START_DATE[1:2]),units="days")
Time differences in days
[1] 623 720
> dt_omics_ckdp_meta$INDEX_DATE[1:2]
[1] "2019-07-17" "2019-08-27"
> as.Date(diag.icd[[1]]$CONDITION_START_DATE[1:2])
[1] "2017-11-01" "2017-09-06"
> difftime(dt_omics_ckdp_meta$INDEX_DATE[1:2],as.Date(diag.icd[[1]]$CONDITION_START_DATE[1:2],tz=""),units="days")
Time differences in days
[1] 623 720
> difftime(as.Date(dt_omics_ckdp_meta$INDEX_DATE[1:2]),as.Date(diag.icd[[1]]$CONDITION_START_DATE[1:2],tz=""),units="days")
Time differences in days

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值