Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a weekend dummy variable

Tags:

r

I'm trying to create a dummy variable in my dataset in R for weekend i.e. the column has a value of 1 when the day is during a weekend and a value of 0 when the day is during the week.

I first tried iterating through the entire dataset by row and assigning the weekend variable a 1 if the date is on the weekend. But this takes forever considering there are ~70,000 rows and I know there is a much simpler way, I just can't figure it out.

Below is what I want the dataframe to look like. Right now it looks like this except for the weekend column. I don't know if this changes anything, but right now date is a factor. I also have a list of the dates fall on weekends:

weekend <- c("2/9/2013", "2/10/2013", "2/16/2013", "2/17/2013", ... , "3/2/2013")

date          hour          weekend
2/10/2013     0             1
2/11/2013     1             0
....          ....          ....

Thanks for the help

like image 701
Ford Avatar asked Dec 27 '22 02:12

Ford


1 Answers

It might be safer to rely on data structures and functions that are actually built around dates:

dat <- read.table(text = "date          hour          weekend
+ 2/10/2013     0             1
+ 2/11/2013     1             0",header = TRUE,sep = "")
> weekdays(as.Date(as.character(dat$date),"%m/%d/%Y")) %in% c('Sunday','Saturday')
[1]  TRUE FALSE

This is essentially the same idea as SenorO's answer, but we convert the dates to an actual date column and then simply use weekdays, which means we don't need to have a list of weekends already on hand.

like image 191
joran Avatar answered Jan 02 '23 14:01

joran