R语言group_by分组操作中如何排除指定的无效取值
R语言dplyr分组统计解决方案
你需要的代码修改如下:
最优方案:统一过滤+分组统计
建议先提前剔除不需要的取值(3、98、99),再自定义分组标签,一次性统计两类的数量和占比,避免多次计算出现分母不一致的问题:
ARR2 %>% # 先排除中间值3和无效值98、99,仅保留需要统计的样本 filter(!v_435 %in% c(3, 98, 99)) %>% # 自定义分组标签 mutate(v_435_level = case_when( v_435 <= 2 ~ "v_435_low", v_435 >= 4 ~ "v_435_high" )) %>% group_by(v_435_level) %>% summarise( n = n(), freq = n / sum(n) )
单独统计v_435_high组的写法
如果你要保留原有单独统计的逻辑,问号位置直接填写v_435 %in% c(4,5)即可,注意一定要提前过滤无效值,否则频率计算的分母会包含所有样本导致结果错误:
# v_435_high 单独统计代码 ARR2%>% filter(!v_435 %in% c(1,2,3,98,99)) %>% group_by(v_435 %in% c(4,5)) %>% summarize(n=n())%>% mutate(freq = n / sum(n) )
语法说明
%in%用于匹配变量是否属于指定的取值集合!代表取反,!x %in% c(a,b)即排除x等于a、b的样本
内容的提问来源于stack exchange,提问作者martis
相关产品推荐
相关产品推荐

