1

我正在尝试使用数值对周末和工作日进行编码,例如“星期一”、“星期二”、...“星期五”= 0 和“星期六”/“星期日”= 1。我目前有以下数据:

头(自行车.d)

    Day    Day.Code
    Sunday     4
    Sunday     4
    Sunday     4
    Sunday     4
    Sunday     4
    Sunday     4

尾巴(自行车.d)

    Day    Day.Code
    Saturday   3
    Saturday   3
    Saturday   3
    Saturday   3
    Saturday   3
    Saturday   3

我使用以下数字对 Day 列进行了编码:

Day.Code = as.numeric(bike.d$Day)

其中周五 = 1,周一 = 2,周六 = 3,周日 = 4,周四 = 5,周二 =6,周三 = 7。

我尝试使用逻辑运算符来分配工作日 = 0 和周末 = 1 的二进制值。我尝试了以下参数的变体,但得到以下输出:

bike.d[,2 == 3|4]=1

head(bike.d)

    Day    Day.Code
     1         1
     1         1
     1         1
     1         1
     1         1
     1         1

尾巴(自行车.d)

    Day    Day.Code
     1         1
     1         1
     1         1
     1         1
     1         1
     1         1

有没有办法可以创建此参数,以便保留“日”列中的文本值?这样二进制代码要么在 Day.code 列中输入,要么在新列中输入?

谢谢您的帮助!

4

1 回答 1

1

Anifelse应该正是您在这里所需要的(还有很多其他方法可以做到):

bike.d$Weekend <- ifelse( bike.d$Day.Code == 3 | bike.d$Day.Code == 4 , 1 , 0 )

一个例子:

bike.d<- data.frame( Day = rep( weekdays(Sys.Date()+1:7) , each = 2 ) , Day.Code = rep( 1:7 , each = 2 ) )
bike.d$Weekend <- ifelse( bike.d$Day.Code == 3 | bike.d$Day.Code == 4 , 1 , 0 )
bike.d
#        Day Day.Code Weekend
#1   Thursday        1       0
#2   Thursday        1       0
#3     Friday        2       0
#4     Friday        2       0
#5   Saturday        3       1
#6   Saturday        3       1
#7     Sunday        4       1
#8     Sunday        4       1
#9     Monday        5       0
#10    Monday        5       0
#11   Tuesday        6       0
#12   Tuesday        6       0
#13 Wednesday        7       0
#14 Wednesday        7       0
于 2013-05-01T15:52:33.087 回答