使用工作日将变量记录为虚拟变量

Record variable to a dummy variable using weekdays

我有一个从星期一开始的变量,它列出了从 1 到 7 的每个日期。我想将其更改为工作日与周末,分别使用 0-1 来创建一个虚拟变量。我知道怎么做,但我不知道如何在代码迭代中包含 6 和 7。

例如,我输入以下内容:

flights$dayweek <-factor(ifelse(as.numeric(flights$dayweek)==6, 1,0))

我上面的意图是让代码找到它说 6 和 7 的任何地方,然后用 1 替换它,对于航班数据集中的变量 dayweek,其他任何东西都是 0。上面的问题是它只做 6 而不是 7。我不知道如何在数据集中包含 7。我试过:

flights$dayweek <-factor(ifelse(as.numeric(flights$dayweek)==6:7, 1,0))
flights$dayweek <-factor(ifelse(as.numeric(flights$dayweek)==c(6,7), 1,0))

我还看过其他常见的虚拟变量主题,但它们似乎都很简单,就像 male/female 一样,从 1 到 0,我知道该怎么做。我可以做一个大于 5 的函数吗?以下示例数据:

schedtime carrier deptime dest distance date dayweek daymonth delay
1700      RU      1651    WER  213      1401    4       1     ontime
1800      RU      1402    EWR  199      1401    6       1     delayed

使用 %in% 运算符测试向量中的包含。

# using an example dataset
flights <- data.frame(dayweek = rep(1:7, 2), "flight" = letters[1:14])
flights$dayweek <-factor(ifelse(as.numeric(flights$dayweek) %in% c(6, 7), 1,0))

> flights
   dayweek flight
1        0      a
2        0      b
3        0      c
4        0      d
5        0      e
6        1      f
7        1      g
8        0      h
9        0      i
10       0      j
11       0      k
12       0      l
13       1      m
14       1      n