R 函数用于分隔宽度不相等的字符



我正在尝试将具有字符格式的时间增量的列分开。

大多数观测的格式是MM:SS,但也有一些是HH:MM:SS格式。我正在尝试根据":"分成列,以便我可以将时间减少到几秒钟以执行一些基本分析。

我想得到这个:

Time
1   11:15
2   12:36
3 1:15:17

进入这个:

Hour  Minuet Second 
1    NA     11   15
2    NA     12   36
3     1     15   17     

我试过了

separate(df, time, into = c("Hours", "Minuets", "Seconds"), by = ":")

其中返回:

Hour  Minuet Second 
1    11     15   NA
2    12     36   NA
3     1     15   17   

这应该有效

library(dplyr)
library(tidyr)
df %>%
separate(time, c("Hour", "Minute", "Second"), sep = ":", fill = "left")
# -------------------------------------------------------------------------
#   Hour Minute Second
# 1 <NA>     11     15
# 2 <NA>     12     36
# 3    1     15     17

数据

#dput(df)
df <- structure(list(time = c("11:15", "12:36", "1:15:17")), class = "data.frame", row.names = c(NA, 
-3L))

?separate

填充 如果 sep 是字符向量,则控制当没有足够的片段时会发生什么。 有三个有效选项:

>"warn" (the default): emit a warning and fill from the right
>"right": fill with missing values on the right
>"left": fill with missing values on the left

最新更新