0

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

而且我查看了其他常见的虚拟变量主题,但它们似乎都是简单的 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
4

1 回答 1

1

使用%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
于 2016-01-16T16:30:17.983 回答