Как сократить время и остаться только частью времени - PullRequest
4 голосов
/ 15 апреля 2019

У меня есть данные, как показано ниже:

2018-04-01 00:12:45.823 
2018-04-01 00:12:49.897 
2018-04-01 00:12:56.207

Как вырезать их только осталось:

00:12:45.823
00:12:49.897
00:12:56.207

Ответы [ 4 ]

6 голосов
/ 15 апреля 2019

Мы также можем использовать и конвертировать в прошлое:

mytime<-"2018-04-01 00:12:45.823"
strsplit(mytime," ")[[1]][2]
#[1] "00:12:45.823"

Что ж, чтение этих данных с помощью read.table разбивает их "красиво":

mytime<-read.table(text="2018-04-01 00:12:45.823 
2018-04-01 00:12:49.897 
                   2018-04-01 00:12:56.207",header=F)
      V1           V2
1 2018-04-01 00:12:45.823
2 2018-04-01 00:12:49.897
3 2018-04-01 00:12:56.207
4 голосов
/ 15 апреля 2019

Мы можем использовать sub для сопоставления символов до одного или нескольких пробелов (\\s+) и замены на пустые ("")

sub("^[^ ]+\\s+", "", df1$col)
#[1] "00:12:45.823" "00:12:49.897" "00:12:56.207"

Или преобразовать в POSIXct, а затем format (здесь могут быть небольшие изменения в точности десятичных знаков)

format(as.POSIXct(df1$col), "%H:%M:%OS3")
#[1] "00:12:45.822" "00:12:49.897" "00:12:56.207"

Или с separate из tidyverse

library(tidyverse)
df1 %>% 
   separate(col, into = c('col1', 'col2'), sep=" ") %>% 
   select(col2)

data

str1 <- c("2018-04-01 00:12:45.823", "2018-04-01 00:12:49.897", 
           "2018-04-01 00:12:56.207")
df1 <- data.frame(col = str1, stringsAsFactors = FALSE)
2 голосов
/ 15 апреля 2019
library(rebus)
library(stringr)
datetimes <- c('2018-04-01 00:12:45.823', 
'2018-04-01 00:12:49.897', 
'2018-04-01 00:12:56.207')
dgt2 <- DGT %R% DGT
str_extract(datetimes, dgt2 %R% ':' %R% dgt2 %R% ':' %R% dgt2 %R% DOT %R% dgt2 %R% DGT)

Может быть более читабельным.dgt2 - 2 цифры, чтобы сделать выражение короче.

[1] "00:12:45.823" "00:12:49.897" "00:12:56.207"

Тот же результат дает следующее:

str_extract(datetimes, digit(2,2) %R% ':' %R% digit(2,2) %R% ':' %R% digit(2,2) %R% DOT %R% digit(3,3))
0 голосов
/ 15 апреля 2019

string a = DateTime.UtcNow.ToLongTimeString (); Замените DateTime.UtcNow на dateTime и легко получите строку времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...