You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:06:06