我有一个变量df1$StudyAreaVisitNote
,我将其转化为一个因素。但是当我将df1
子集化为BS
时,这个变量并不是一个因素:对子集化数据使用table()函数会显示似乎应该返回的结果{{1}在原始数据上运行?
为什么会这样?
我找到的两个解决方法是:
代码:
table()
答案 0 :(得分:2)
即使在子集化之后,因子仍然是一个因素。我确定class(BS$StudyAreaVisitNote)=="factor"
。但是,因素不会自动降低未使用的水平。当你做像
set.seed(16)
dd<-data.frame(
gender=sample(c("M","F"), 25, replace=T),
age=rpois(25, 20)
)
dd
table(subset(dd, age<15)$gender)
# F M
# 0 3
这个因素记住它有M和F,即使子集没有任何F,仍然保留了这个级别。如果你想摆脱未使用的等级,你可以明确地调用droplevels()
。
table(droplevels(subset(dd, age<15))$gender)
# M
# 3
(现在它忘记了F&#39;)
因此,不要使用summary
,而是在两个data.frames上比较table
的结果。