如何指定separate函数sep参数的正则表达式拆分时间戳为两列?
解决时间戳拆分问题
你的代码存在语法错误:sep = "- "被错误地放在了into参数的向量中,导致into被识别为包含3个元素的向量,同时separate函数使用了默认的分隔规则(匹配所有非字母数字字符),所以才会把时间里的冒号也当作分隔符,出现错误拆分和警告。
正确的代码写法
修正参数位置,将sep作为separate的独立参数,并使用匹配-后跟空格的正则表达式:
library(tidyr) library(dplyr) dat <- data.frame(x = c("08:00:00- 10:00:00", "09:00:00- 11:00:00")) dat %>% separate(col = x, into = c("start_time", "end_time"), sep = "-\\s+")
运行结果
start_time end_time 1 08:00:00 10:00:00 2 09:00:00 11:00:00
说明
sep = "-\\s+"是正则表达式,匹配减号后跟一个或多个空格,确保只拆分时间戳之间的分隔符,不会影响时间内部的冒号。- 如果你的分隔符固定是
-(减号加单个空格),也可以直接用sep = "- ",效果一致。
内容的提问来源于stack exchange,提问作者kpm
相关产品推荐
相关产品推荐

