【发布时间】:2019-09-20 04:25:08
【问题描述】:
我目前正在提取出现在如下字符串中的所有数字:
library(data.table)
library(stringr)
Data<-data.table(
X=sample(1:10),
Y=c("before 10 pm","1-3 am","at 3pm","after 4pm","on 12:00am","at 16:00","between 12-12:30","at 1PM","1.30-2pm","11.00AM - 1.00PM")
)
fun1<-function(x){
ge<-gregexpr("(^-?|(?<=\\D)-)?(\\d\\.?\\d*?)+",x,perl=T)
return(as.numeric(sapply(regmatches(x,ge),paste0,collapse="")))
}
Data[,parsed:=lapply(Y,fun1)]
但这会提取数字,我需要用分隔符分隔它们。例如 1.30-2pm 应该解析为 1_30_2 。最终我需要从这些评论中获取时间窗口。这种方法好吗?
【问题讨论】:
-
@Anony-MousseI 我只是一个初学者,你能指导我什么是最好的方法吗?
-
我认为根本没有处理此类数据的好方法。这些值具有非常不同的语义。为什么你不能让它们保持原样?你到底打算怎么做?
-
@Anony-Mousse 我需要根据他们指定的时间提取时间窗口。就像下午 2 点之前 = 08:00-14:00 1.30-2pm =13:30-14:00。那么它将是结构化格式,易于进行进一步分析
-
但您可能不想失去“下午 2 点之前”和“下午 2 点之后”之间的区别...