在 R 的 data.table 中操作数据集时使用值而不是标签



所以我一直在尝试使用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]

最新更新