首页 文章

使用逻辑运算符分配值

提问于
浏览
1

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

头(自行车.d)

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

尾(bike.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列中输入还是在新列中输入?

谢谢您的帮助!

1 回答

  • 1

    ifelse 应该正是您需要的(还有很多其他方法):

    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
    

相关问题