我试图使用数值来编码周末和工作日,例如"Monday","Tuesday",…"星期五"= 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列:
的一天。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
是否有一种方法可以创建此参数,以便保留"日"列中的文本值?所以二进制代码要么是输入的。代码列,还是新列?
谢谢你的帮助!
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