r - R中将日期格式转换为数字格式的问题

标签 r

我有一个如下所示的数据集:

#df 

id       date
1       2016-08-30 10:46:46.810

我尝试删除小时部分并只保留日期。此功能有效:

df$date <-  format(as.POSIXct(strptime(df$date,"%Y-%m-%d %H:%M:%S")) ,format = "%Y-%m-%d")

现在的日期看起来像这样

id      date
1       2016-08-30

这就是我一直在寻找的东西。但问题是我希望对这些数据进行一些计算,并且必须将其转换为整数:

   temp <-  as.numeric(df$date )

它给了我以下警告:

Warning message:
NAs introduced by coercion 

结果

NA

有谁知道问题出在哪里吗?

最佳答案

这非常简单,因为您有一个标准格式(请参阅 ISO 8601 ),其中除其他外 anytime包支持(并且它支持其他有点常规的格式):

R> library(anytime)
R> at <- anytime("2016-08-30 10:46:46.810")
R> at
[1] "2016-08-30 10:46:46.80 CDT"
R> ad <- anydate("2016-08-30 10:46:46.810")
R> ad
[1] "2016-08-30"
R> 

不过,关键是了解底层日期格式之间的关系。您必须阅读并尝试更多一点。在这里,本质上我们只有

R> as.Date(anytime("2016-08-30 10:46:46.810"))
[1] "2016-08-30"
R> 

anytime包还有一些其他技巧,例如从整数、字符、因子、有序等自动转换......

至于你问题的第二部分,你已经如此接近,然后你又用format()创建了一个角色来破坏它代表。

您几乎总是需要日期表示:

R> ad <- as.Date(anytime("2016-08-30 10:46:46.810"))
R> as.integer(ad)
[1] 17043
R> as.numeric(ad)
[1] 17043
R> ad + 1:3
[1] "2016-08-31" "2016-09-01" "2016-09-02"
R> 

关于r - R中将日期格式转换为数字格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077057/

相关文章:

r - for循环中使用ggplot进行绘图不起作用

r - 从R中的周数和年份中获取周开始日期

r - 双 for 循环的高效向量化

r - 按 purrr::transpose 对列表进行排序,但缺少某些值

r - 使用 R 中的任何 NA 查看所有列名

r - 在 R 中逐行绑定(bind) data.frames 而不创建副本

r - 实现并行属性 vctrs 类

r - R中data.table中的.SD代表什么

R dplyr列作为变量

r - 有没有办法去除用 geom_sf_text 制作的标签周围的边框?