已创建列中的R数据被截断

已创建列中的R数据被截断,r,R,我想将datetime转换为R中mm/dd/yyyy格式的日期。我创建的新列中的数据被截断。您可以使用下面的代码查看示例。第6行中,期望输出为2016年11月16日,但显示为201年11月16日 library(dplyr) a <- c("2/23/2017 4:45", "2/15/2017 21:46", "2/10/2017 4:20", "2/9/2017 7:19", "2/7/2017 3:23", "11/16/2016 0:58") test <- a

我想将datetime转换为R中mm/dd/yyyy格式的日期。我创建的新列中的数据被截断。您可以使用下面的代码查看示例。第6行中,期望输出为2016年11月16日,但显示为201年11月16日

library(dplyr)

a <- c("2/23/2017 4:45", "2/15/2017 21:46", "2/10/2017 4:20", 
    "2/9/2017 7:19", "2/7/2017 3:23", "11/16/2016 0:58")

test <- as.data.frame(a)

test %>% mutate(new = substr(a, 1, regexpr(" ",a)[1]-1))
库(dplyr)

a如果您有日期值,那么最好将其作为日期值使用,而不是使用正则表达式和子字符串。下面是一个帮助函数,用于将数据解析为dplyr友好的格式

parsect <- function(x, f="%m/%d/%Y %H:%M") {
    as.POSIXct(strptime(x, f))
}
parsect()
会将该值转换为正确的日期/时间值,然后您可以使用base
strftime()
函数格式化该日期/时间

尽管看起来您的方法在没有
[1]
部分的情况下可以工作,因为
regexpr()
是矢量化的

test %>% mutate(new = substr(a, 1, regexpr(" ",a)-1))

[1]
强制所有行使用在第一个值中找到空格的位置。

非常感谢您的解释!现在可以了。
test %>% mutate(new = substr(a, 1, regexpr(" ",a)-1))