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

时间:2017-03-09 20:52:37

标签: r

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

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))

1 个答案:

答案 0 :(得分:0)

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

parsect <- function(x, f="%m/%d/%Y %H:%M") {
    as.POSIXct(strptime(x, f))
}

然后你可以做

test %>% mutate(new = strftime(parsect(a), "%Y-%m-%d"))

parsect()会将值转换为正确的日期/时间值,然后您可以使用基本strftime()函数格式化该日期/时间。

虽然看起来您的方法在没有[1]部分的情况下有效,因为regexpr()已经过矢量化。

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

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