r - 一列R中的不同日期格式
问题描述
我有一列具有不同的日期格式:
我试图用任何时间功能解决这个问题,但我得到了第二种格式的 NA。
library(anytime)
dates <- c("2017-01-23 00:00:00.000",
"2017-1-23 00:00:00.000",
"20.02.2017 11:15",
"2.2.2017 11:15")
anytime(dates)
[1] "2017-01-23 CET" "2017-01-23 CET" NA NA
有没有办法做到这一点?
解决方案
dmy_hms
编辑——我在使用它应该在的地方有一个错字dmy_hm
。
这种方法依赖于字符串中有关于使用哪种格式的线索。在这里,我假设所有日期都在 2010 年到 2019 年底之间,并且日-月-年字符串都在日期的各个部分之间使用了一个点。
library(tidyverse); library(lubridate);
dates %>%
enframe() %>%
# Edit -- better solution
mutate(dates = case_when(value %>% str_detect("\\d{4}\\-") ~ ymd_hms(dates),
TRUE ~ dmy_hm(dates)))
# A tibble: 4 x 3
name value dates
<int> <chr> <dttm>
1 1 2017-01-23 00:00:00.000 2017-01-23 00:00:00
2 2 2017-1-23 00:00:00.000 2017-01-23 00:00:00
3 3 20.02.2017 11:15 2017-02-20 11:15:00
4 4 2.2.2017 11:15 2017-02-02 11:15:00
# old solution
mutate(dates = case_when(value %>% str_detect(".201") ~ dmy_hm(dates),
TRUE ~ ymd_hms(dates)))
推荐阅读
- database - Transaction Management By @@Transactional Annotation
- php - Get title Attribute of input variable using PHP
- sql - 如果列的值匹配,则删除与特定 ID 对应的所有行
- graphql - 传递参数子类型 graphql
- python - python中的SQlite用户定义函数
- javascript - 有没有办法沿 Three.js 中的路径设置 ExtrudeBufferGeometrie 的初始形状方向?
- gis - 使用 OpenLayers 5 在地图上添加旋转的卫星图像
- php - Slim-3 php 框架显示页面未找到错误,即使 url 正确?
- android - 自定义视图翻译动画在回收站视图中不起作用
- yarnpkg - lerna的run命令和yarn的wsrun有什么区别?