如何在R中只创建时间



我的数据帧中有一个时间列,其格式为字符:

TIME
10:54:10.23
10:54:11.58
10:56:34.21
11:57:11.23

所以你看,我最后也有毫秒,但我试图只得到%H-%M-%S,而没有.x毫秒。我试图通过创建一个新的专栏:data$hms <- format(as.POSIXct(data$TIME), "%H:%M:%S"),但失败了。。。Error in as.POSIXlt.character(x, tz, ...): String is not in a unique standard format

感谢您的每一次帮助。

在用str_remove删除最后两位数字后,我们可以使用chron包中的times

#install.packages("chron")
library(chron)
library(dplyr)
library(stringr)
df %>% 
mutate(TIME = chron(times=str_remove(TIME, '\..*$')))

输出:

TIME    
<times> 
1 10:54:10
2 10:54:11
3 10:56:34
4 11:57:11

数据

df <- structure(list(TIME = c("10:54:10.23", "10:54:11.58", "10:56:34.21", 
"11:57:11.23")), class = "data.frame", row.names = c(NA, -4L))

您可以从时间中删除毫秒。

df <- transform(df, TIME = sub('\..*', '', TIME))
df
#      TIME
#1 10:54:10
#2 10:54:11
#3 10:56:34
#4 11:57:11

我们可以从base R使用trimws

df$TIME <- trimws(df$TIME, whitespace = "\.\d+")

-输出

df$TIME
[1] "10:54:10" "10:54:11" "10:56:34" "11:57:11"

数据

df <- structure(list(TIME = c("10:54:10.23", "10:54:11.58", "10:56:34.21", 
"11:57:11.23")), class = "data.frame", row.names = c(NA, -4L))

相关内容

  • 没有找到相关文章

最新更新