我有如下数据:
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
答案 0 :(得分:6)
我们还可以使用并转换回时间:
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
答案 1 :(得分:4)
我们可以使用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)
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 :(得分:2)
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))
答案 3 :(得分:0)
字符串a = DateTime.UtcNow.ToLongTimeString(); 将DateTime.UtcNow替换为dateTime并轻松获取时间字符串。