如何将工作日转换为R中的因子

时间:2016-08-16 15:54:49

标签: r date

我有一个这样的数据框:

date          count   wd
2012-10-01        0  Monday
2012-10-02        5  Tuesday
2012-10-06       10  Saturday
2012-10-07       15  Sunday

我用

dat <- mutate(dat,wd = weekdays(as.Date(dat$date))) 

添加一个新阵列&#34; wd&#34;但是,我想添加一个新的因子数组来显示这一天是工作日还是周末,例如:

date          count   wd
2012-10-01        0  weekday
2012-10-02        5  weekday
2012-10-06       10  weekend
2012-10-07       15  weekend

有什么简单的方法吗?感谢

1 个答案:

答案 0 :(得分:2)

ifelse是检查向量的每个元素的条件并基于检查执行某些操作的标准方法。由于您已经拥有命名的工作日,因此您需要检查以下非常简单的条件:

dat$we = ifelse(dat$wd %in% c("Saturday", "Sunday"), "weekend", "weekday")

这会为您的数据添加一个新变量we。使用$<-将数据框添加到数据框时,默认情况下这是一个因素。

您当然可以在ifelse()内使用mutate(或使用dplyr::if_else),在这种情况下,您需要将结果包装在factor()中以强制它一个因素 - 否则它将是character

对于其他检查周末的方法,不依赖已经知道星期几的名称,请参阅How to check if a date is a weekend?