问题描述:
在本地使用as.Date()函数从POSIXct类型中提取date时,出现了日期不一致的错误。导致处理数据时,总是出问题。
还好被领导发现数据有误,不然这个bug不知道还要潜伏多久。尽管如此,找出这个问题还是花了我很长时间。

原因:
这里的问题在于,当我们用as.POSIXct将形如 "2016-04-15 00:00:37" 的字符转换为POSIXct类型时,默认使用的是本地系统的时区。
如中国的时区是CST,则得到的POSIXct为:"2016-04-15 00:00:37 CST".
但是使用as.Date(POSIXct)提取date时,as.Date()函数默认使用的标准时间是UTC。所以这里就出现了8小时的误差,导致提取出来的日期不一致。
as.Date()函数文档的相关说明: The as.Date methods accept character strings, factors, logical NA and objects of classes "POSIXlt

在R中使用as.Date()从POSIXct类型提取日期时,由于默认时区不同(本地系统时区与UTC),可能导致8小时误差。解决方法是确保在转换时指定一致的时区,或使用as.Date(format(POSIXct_string, '%Y%m%d'))避免时区影响。"
112069756,10538476,Stata快速学习:聚类分析与最小二乘回归,"['统计学', '数据分析', '回归模型', 'Stata教程', '数据预处理']
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



