Regex 删除R中不是日期的字符
我有一些数据框,df带有一列,日期格式如下:Regex 删除R中不是日期的字符,regex,r,Regex,R,我有一些数据框,df带有一列,日期格式如下: pv$day 01/01/13 00:00:00 03/01/13 00:02:03 04/03/13 00:10:15 .... 我想去掉时间戳,只留下日期(例如,第一行为01/01/13)。我尝试了使用sapply()来应用strsplit()函数,并尝试使用正则表达式过滤内容,但在这两种情况下似乎都没有完全正确。这: sapply(pv$day, function(x) strsplit(toString(
pv$day
01/01/13 00:00:00
03/01/13 00:02:03
04/03/13 00:10:15
....
我想去掉时间戳,只留下日期(例如,第一行为01/01/13
)。我尝试了使用sapply()
来应用strsplit()
函数,并尝试使用正则表达式过滤内容,但在这两种情况下似乎都没有完全正确。这:
sapply(pv$day, function(x) strsplit(toString(x), ' '))
为我提供具有正确拆分的列,但是使用[1]
或[[1]]
进行索引不会返回拆分的第一个元素
最好的方法是什么?您可以使用
sub
:
vec <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
sub(" .+", "", vec)
# [1] "01/01/13" "03/01/13" "04/03/13"
vec您可以使用sub
:
vec <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
sub(" .+", "", vec)
# [1] "01/01/13" "03/01/13" "04/03/13"
vec一个简单灵活的解决方案是使用strtime和strftime。下面是一个使用上述示例中的日期的示例:
# Your dates
t <- c("01/01/13 00:00:00","03/01/13 00:02:03", "04/03/13 00:10:15")
# Convert character strings to dates
z <- strptime(t, "%d/%m/%y %H:%M:%OS")
# Convert dates to string, omitting the time
z.date <- strftime(z,"%d/%m/%y")
# Print the first date
z.date[1]
#你的约会
t一个简单灵活的解决方案是使用strptime和strftime。下面是一个使用上述示例中的日期的示例:
# Your dates
t <- c("01/01/13 00:00:00","03/01/13 00:02:03", "04/03/13 00:10:15")
# Convert character strings to dates
z <- strptime(t, "%d/%m/%y %H:%M:%OS")
# Convert dates to string, omitting the time
z.date <- strftime(z,"%d/%m/%y")
# Print the first date
z.date[1]
#你的约会
t这里有一个很好的使用sapply
的方法,它使用strsplit
在空格处拆分
> d <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
> sapply(strsplit(d, " "), `[`, 1)
# [1] "01/01/13" "03/01/13" "04/03/13"
这里有一个很好的使用sapply
的方法,它使用strsplit
在空间上拆分
> d <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
> sapply(strsplit(d, " "), `[`, 1)
# [1] "01/01/13" "03/01/13" "04/03/13"
下面是一种使用环视断言的方法:
vec <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
gsub(pattern = "(?=00).*$", replacement = "", vec, perl = TRUE)
[1] "01/01/13 " "03/01/13 " "04/03/13 "
vec以下是一种使用环视断言的方法:
vec <- c("01/01/13 00:00:00", "03/01/13 00:02:03", "04/03/13 00:10:15")
gsub(pattern = "(?=00).*$", replacement = "", vec, perl = TRUE)
[1] "01/01/13 " "03/01/13 " "04/03/13 "
vec这似乎得到了预期的格式格式(如.Date(d,format=“%d/%m/%y”),%d/%m/%y”)#[1]“01/01/13”“03/01/13”“04/03/13”
这似乎得到了预期的格式格式(如.Date(d,format=“%d/%m/%y”),%d/%m/%y”)#[1]“01/01/13”“03/13”