所以我一直在尝试使用data.table
操纵数据集。就像在STATA
中一样,我想使用它们的值而不是标签对我的因素进行分类。我觉得这在处理分类变量时更安全,这些变量有非常奇怪的标签和很多空格。
到目前为止,我还不能在R
中做到这一点。这可能吗,还是我错过了什么?
我已经附加了一个虚拟代码来重新创建这个问题。
install.packages("data.table")
library(data.table)
classmates
# dummy data
school_friends <-data.table(names = as.factor(c("Beth", "Ben", "Andrew","Amy", "Claire","Ahmed", "Moses", "Jose", "Ibrahim", "Rachel")
),
age = c(19,18,19,19,20,19,19,17,18,19))
str(school_friends)
# categorise dataset
school_friends[names==1 |
names==4 |
names==5 |
names==10,
sex:=1]
school_friends[names==2 |
names==3 |
names==6 |
names==7 |
names==8 |
names==9,
sex:=2]
# labels levels
school_friends$sex <- factor(school_friends$sex, levels = c(1,2),
labels = c("Boy", "Girl"))
在STATA
中,这样做将像下面这样直接:
# create new categories
gen sex=.
replace sex=0 if names==1 | names==4 | names==5 | names==10
replace sex=1 if names==2 | names==3 | names==6 | names==7 | names==8 | names==9
# label categories
label define edulab 0 "Boy" 1 "Girl"
label values edu edulab
一种可能的方法是这样使用关卡函数:
school_friends[names%in%levels(school_friends$names)[1:2],sex:=1]