我正在使用R中的一个非常大的数据集,并且已经使用数据框进行操作,并决定切换到data.tables以帮助加快操作.我无法理解J操作,特别是我正在尝试生成虚拟变量,但我无法弄清楚如何在data.tables []中编写条件操作.
MWE:
test <- data.table("index"=rep(letters[1:10],100),"var1"=rnorm(1000,0,1))
Run Code Online (Sandbox Code Playgroud)
我想这样做是为了添加列a通过j为虚拟变量,该列a将有一个值1时,index == "a"和0其他.在data.frame环境中,它看起来像:
test$a <- 0
test$a[test$index=='a'] <- 1
Run Code Online (Sandbox Code Playgroud) 我想使用dplyr创建7个虚拟变量-每天创建一个
到目前为止,我已经设法使用sjmisc包和to_dummy函数来完成此操作,但是我分两个步骤进行了操作-1。创建虚拟变量的df,2)附加到原始df
#Sample dataframe
mydfdata.frame(x=rep(letters[1:9]),
day=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Fri","Mon"))
#1.Create the 7 dummy variables separately
daysdummy<-sjmisc::to_dummy(mydf$day,suffix="label")
#2. append to dataframe
mydf<-bind_cols(mydf,daysdummy)
> mydf
x day day_Fri day_Mon day_Sat day_Sun day_Thurs day_Tues day_Wed
1 a Mon 0 1 0 0 0 0 0
2 b Tues 0 0 0 0 0 1 0
3 c Wed 0 0 0 0 0 0 1
4 d Thurs 0 0 0 0 1 0 0
5 e Fri 1 0 0 0 …Run Code Online (Sandbox Code Playgroud)