dplyr的过滤因子水平

时间:2018-08-16 14:24:53

标签: r filter dplyr

我有一个data.frame,其中包含203行和111个数字变量。我首先导入数据库。在这个阶段没有问题,我可以过滤数据时得到预期的结果( Q5 == 1的154个观测值和Q6_6 == 1的11个观测值):

> cred.res = read_excel("C:/Users/whatever")
> filter(cred.res, Q6_6==1)
# A tibble: 11 x 111
> filter(cred.res, Q5==1)
# A tibble: 154 x 111

然后,当我要实现MCA时,我需要将一些变量转换为factor:

cred.res = data.frame(apply(cred.res,2, as.factor))

num.col <- c("Q10_sum", "Q11_sum", "Q12_sum", "NB_DE_BI","NB_DE_B1", "POURC", "POP","E101", "TOTAL_EM", "E110", "ENFANTS_", "DEPENSES", "F314", "F501", "TOTAL_DE","Nbpartenaire")

cred.res[, num.col] = apply(cred.res[, num.col], 2, as.numeric)

那就是麻烦开始的地方。确实,当我在Q5上进行过滤时,仍然可以得到154个观测值,但不适用于Q6_6(我得到0个观测值):

> de=filter(cred.res, Q5==1)
> str(de)
'data.frame':   154 obs. of  111 variables:

> se=filter(cred.res, Q6_6==1)
> str(se)
'data.frame':   0 obs. of  111 variables:

我尝试使用功能as.numeric,但仍然无法正常工作,我现在得到38个肥胖:

> ze=filter(cred.res, as.numeric(Q6_6)==1)
> str(ze)
'data.frame':   38 obs. of  111 variables:

但是它可以与运算符> 1一起使用:

> qe=filter(cred.res, as.numeric(Q6_6)>1)
> str(qe)
'data.frame':   11 obs. of  111 variables:

似乎将我的变量转换为因子已经改变了值。有人可以解释它是如何发生的吗?我应该在转换变量之前始终应用过滤器吗?

希望我可以理解,我不是英语为母语的人。 谢谢!

0 个答案:

没有答案