2017-07-25 78 views
2

我有一个日期时间,我试图剥离和清理。我不确定是否有这样的开箱即用的东西。我做了一些搜索,但找不到任何东西。日期格式为..创建函数来格式化数据框中的列

2017-01-01T01:36:17.000Z 

重复的例子:

StartDate <- c("2017-01-01T01:36:17.000Z", "2017-01-01T01:36:17.000Z") 
Num <- c(1,2) 
DataFrame <- data_frame(Num, StartDate) 

我做固定它下面

require(dplyr) 
require(tidyr) 
require(lubridate) 

DataFrame <- DataFrame %>% 
    separate(StartDate , into = c("NewDate", "tail"), sep = "T") %>% 
    mutate(NewDate= ymd(NewDate)) %>% 
    select(-tail) 

我想要做的就是把它变成一个功能,以便我可以在需要时进行管道输送。

我想出了以下内容,但一直未能得到它的工作。我也试过了separate_和mutate_的变体。但仍然没有运气。

ztime <- function(df, datecol, newcol) { 
    library(lubridate) 
    library(tidyr) 
    library(dplyr) 


    df <- df %>% 
    separate_(datecol, into = c(newcol, "extra"), sep = "T") #%>% 
    mutate_(newcol = ymd(newcol)) %>% 
    select(-extra) 

} 

希望得到一些见解!谢谢你在前进

回答

3

你为什么不打电话从lubridate as_date

dater <- function(x){ 
    lubridate::as_date(x) 
} 
dater("2017-01-01T01:36:17.000Z") 
[1] "2017-01-01" 

最佳

科林

+0

完美总是赞叹不已。我想我不知道as_date。这是完美的,谢谢! –

0

您可以简单地使用

ztime <- function(df, datecol, newcol) { 
    df[[newcol]] <- lubridate::ymd_hms(df[[datecol]]) 
} 
1

有一个游戏,改变包! anytime

library(anytime) 

NewDataFrame <- DataFrame %>% 
    mutate(NewDate = anytime(StartDate)) 

我在多少清理和解释

+0

谢谢!这很了解。我一直在学习新东西 –