【问题标题】:create function to format a column in a dataframe创建函数以格式化数据框中的列
【发布时间】:2017-07-25 20:11:56
【问题描述】:

我有一个约会时间,我正试图剥离和清理。我不确定是否有开箱即用的东西。我做了一些搜索,但找不到任何东西。日期格式是..

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)

}

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

【问题讨论】:

    标签: r function dplyr


    【解决方案1】:

    你为什么不打电话给 lubridate 的as_date 呢?

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

    最好的

    科林

    【讨论】:

    • 完美。我想我不知道 as_date。这是完美的,谢谢!
    【解决方案2】:

    有一个改变游戏规则的包! anytime

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

    我总是对它清理和解释的程度感到惊讶

    【讨论】:

      【解决方案3】:

      你可以简单地使用

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

      【讨论】:

        猜你喜欢
        • 2019-05-01
        • 2021-11-11
        • 2022-07-19
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多