我正在尝试使用数值编码周末和工作日,例如“星期一”,“星期二”,......“星期五”= 0和“星期六”/“星期日”= 1.我目前有以下数据:
头(bike.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
尾(bike.d)
Day Day.Code
1 1
1 1
1 1
1 1
1 1
1 1
有没有办法可以创建这个参数,以便保留“Day”列中的文本值?那么二进制代码是在Day.code列中输入还是在新列中输入?
感谢您的帮助!
答案 0 :(得分: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