计算ingressosmensuals_uc十分位数仅得1值的问题排查
解决十分位数分组变量全为1的问题
问题原因
你的数据框当前处于按NUMERO分组的状态(从数据结构的grouped_df类可看出),分组状态下使用mutate(ntile(...))时,ntile会对每个分组单独计算十分位数。但你的每个分组仅包含1条数据,所以每个分组的十分位数只能返回1,最终所有结果都是1。
解决方案
在计算十分位数前,先使用ungroup()取消数据框的分组状态,再执行ntile计算:
Unitatsconsum_2021 <- Unitatsconsum_2021 %>% ungroup() %>% # 取消分组 mutate(decils_renda_uc = ntile(ingressosmensuals_uc, 10)) %>% mutate(decils_renda_uc = factor(decils_renda_uc, levels = c(1:10), labels = c("1r","2n","3r","4t","5è","6è","7è","8è","9è","10è")))
验证步骤
你可以先运行以下代码确认当前数据的分组状态:
# 查看数据类 class(Unitatsconsum_2021) # 查看分组变量 groups(Unitatsconsum_2021)
执行ungroup()后,数据类会变为tbl_df/data.frame,此时ntile会基于整个数据集计算十分位数,就能得到正确的分组结果。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

