使用带有 dplyr 的函数来解析日期
Using functions with dplyr to parse dates
我在 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 在函数之外工作正常,但我正在尝试学习集成和重用代码,所以我想使用函数来执行此操作。任何帮助将不胜感激
如果是我,我会尝试创建一个显示日期格式的列,然后使用 and ifelse
应用以正确转换为 POSIXct
对象
您的 mutate
调用中的这一行将生成日期格式
date_format = ifelse(grepl("\d{4}-\d{2}-\d{2} ", SMS.Date), "ymd", "mdy")
我在 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 在函数之外工作正常,但我正在尝试学习集成和重用代码,所以我想使用函数来执行此操作。任何帮助将不胜感激
如果是我,我会尝试创建一个显示日期格式的列,然后使用 and ifelse
应用以正确转换为 POSIXct
对象
您的 mutate
调用中的这一行将生成日期格式
date_format = ifelse(grepl("\d{4}-\d{2}-\d{2} ", SMS.Date), "ymd", "mdy")