我在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在函数之外工作正常,但我试图学习集成和重用代码,所以我想使用函数来做到这一点。任何帮助将不胜感激
答案 0 :(得分:1)
如果是我,我会尝试创建一个显示日期格式的列,然后使用和debugQuery
应用以正确转换为ifelse
对象
POSIXct
来电中的此行会生成日期格式
mutate