首页 > 解决方案 > 编辑日期格式并使用日期对数据框进行排序

问题描述

我有一个数据框,它有两种不同格式的日期列,所以我想将日期格式编辑为相同,并根据日期和时间对所有数据进行排序。这是导入后文本数据的样子

datetime                  Info

08.08.2019 23:43:42,356 : PRG_Signal_Ampel

08.08.2019 23:43:50,136 : MAIN 

08.08.19 23:42:50,164 : T_SV_SharedMemRecs.Set

08.08.19 23:42:50,164 : T_SV_SharedMemRecs.Set

08.08.19 23:42:50,184  : data testing

这就是我想要得到的

datetime                  Info


08.08.2019 23:42:50,164 : T_SV_SharedMemRecs.Set

08.08.2019 23:42:50,164 : T_SV_SharedMemRecs.Set

08.08.2019 23:42:50,184  : data testing

08.08.2019 23:43:42,356 : PRG_Signal_Ampel 

08.08.2019 23:43:50,136 : MAIN

标签: r

解决方案


编辑:基于 camille 对您上一个问题的很好回答,有代码可以处理导入的文本作为起点:https ://stackoverflow.com/a/57964340/3460670

我会使用使用并且可以处理 2 或 4 位数年份的lubridate函数(用句点替换逗号):parse_date_timeguess_formats

parse_date_time(gsub(",", ".", datetime), orders = c("dmY HMOS", "dmy HMOS"))

这是它的样子。我添加options(digits.secs=3)了以秒显示小数位。

import_txt<-
"08.08.2019 23:43:42,356 : PRG_Signal_Ampel
08.08.2019 23:43:50,136 : MAIN
08.08.19 23:42:50,164 : T_SV_SharedMemRecs.Set
08.08.19 23:42:50,164 : T_SV_SharedMemRecs.Set
08.08.19 23:42:50,184 : data testing"

library(tidyr)
library(dplyr)
library(lubridate)

options(digits.secs=3)

txt <- readr::read_lines(import_txt)

data.frame(txt) %>%
  separate(txt, into = c("datetime", "info"), sep = " : ") %>%
  mutate(datetime = parse_date_time(gsub(",", ".", datetime), orders = c("dmY HMOS", "dmy HMOS"))) %>%
  arrange(datetime)

                 datetime                   info
1 2019-08-08 23:42:50.164 T_SV_SharedMemRecs.Set
2 2019-08-08 23:42:50.164 T_SV_SharedMemRecs.Set
3 2019-08-08 23:42:50.184           data testing
4 2019-08-08 23:43:42.355       PRG_Signal_Ampel
5 2019-08-08 23:43:50.136                   MAIN

推荐阅读