Abh*_*nav 4 r categorical-data
我有以下数据帧.这只是头部,日期跨越2个月.我的问题是我如何在数据框中创建一个新的因子变量,有两个级别,"工作日"和"周末",表明给定日期是工作日还是周末日?
steps date interval
1 37.3826 2012-10-01 0
2 37.3826 2012-10-01 5
3 37.3826 2012-10-01 10
4 37.3826 2012-10-01 15
5 37.3826 2012-10-01 20
6 37.3826 2012-10-01 25
Run Code Online (Sandbox Code Playgroud)
您可以使用 base R
df1$date <- as.Date(df1$date)
#create a vector of weekdays
weekdays1 <- c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')
#Use `%in%` and `weekdays` to create a logical vector
#convert to `factor` and specify the `levels/labels`
df1$wDay <- factor((weekdays(df1$date) %in% weekdays1),
levels=c(FALSE, TRUE), labels=c('weekend', 'weekday')
#Or
df1$wDay <- c('weekend', 'weekday')[(weekdays(df1$date) %in% weekdays1)+1L]
Run Code Online (Sandbox Code Playgroud)
或者isWeekday,isWeekend来自timeDate.我们可以指定weekdayswith wday参数.它返回一个逻辑向量,如果我们需要转换为可能的字符串,如上所示.
library(timeDate)
isWeekday(df1$date, wday=1:5)
Run Code Online (Sandbox Code Playgroud)
那这个呢:
activity$week <- ifelse(weekdays(activity$date) %in% c("Saturday", "Sunday"), "weekend", "weekday")
Run Code Online (Sandbox Code Playgroud)