使用dplyr函数来解析日期

时间:2015-07-22 13:34:27

标签: r function dplyr

我在R中使用dyplr操作时间戳 代码如下 从本质上讲,我们会在特定时间发送电子邮件并得到回复 - 如果有的话。我想从发送和响应项中提取许多属性。

涉及3个国家,他们的时间戳设置不同 例如,英国有一个时间戳,如:2015-03-11 09:32:51,其他两个国家的时间戳如02/03/2015 08:02

我根据我对dplyr的研究创建了下面的代码,我希望用它创建一个函数,但是我得到了错误

udf_parsedates <- function(strFormat) 
  {
Email <- Email %>%
mutate(Email.dtm = parse_date_time(SMS.Date,strFormat),
       Email.Hour = as.numeric(format(SMS.dtm,"%H")),
       Email.Dow = wday(SMS.dtm, label=TRUE, abbr=FALSE),
       Rep.dtm = parse_date_time(Reply.Date,strFormat),
       Rep.Hour = as.numeric(format(Rep.dtm,"%H")),
       Rep.Dow = wday(Rep.dtm, label=TRUE, abbr=FALSE),
       ResponseTime.Hours = as.numeric(difftime(Rep.dtm, SMS.dtm, units="hours")))
  }

# Find hour and DOW of the Email

  if(Email$dest_ctry == 'GB') {udf_parsedates("%Y-%m-%d %H:%M:%S")
    } else if (SMS$dest_ctry == 'IT') {udf_parsedates("%Y/%m/%d %H:%M")
    } else if (SMS$dest_ctry == 'ES') {udf_parsedates("%Y/%m/%d %H:%M")}

mutate在函数之外工作正常,但我试图学习集成和重用代码,所以我想使用函数来做到这一点。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

如果是我,我会尝试创建一个显示日期格式的列,然后使用和debugQuery应用以正确转换为ifelse对象

POSIXct来电中的此行会生成日期格式

mutate