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

R语言临时移除Unknown层级生成prop.table的问题与解决

临时移除向量层级生成prop.table的问题及解决

我是R语言新手,手中有一个包含5个层级的向量:

c("Unknown", "Less than 2 hours", "2-4 hours", "4-6 hours", "6+ hours")

常规分析中需要保留Unknown层级,但我希望临时移除它,生成不受其干扰的prop.table,避免百分比被偏差影响。

当前代码及输出

prop.table(table(x)

输出:

###  Unknown Less than 2 hours         2-4 hours         4-6 hours          6+ hours 
     0.0002766941      0.4163692206      0.3599789713      0.1509642788      0.0724108353 

尝试过的无效方法

  1. 直接在prop.table中排除层级:
prop.table(x[x %in% c('Less than 2 hours', '2-4 hours', '4-6 hours', '6+ hours')])

prop.table(table(factor(tgi.model$hourswatching_TV), exlude = "Unknown"))
  1. 将Unknown转为NA后处理:
x <- factor(c("Unknown", "Less than 2 hours", "2-4 hours", "4-6 hours", "6+ hours"))
levels(x)[levels(x)=='Unknown'] <- NA

na.omit(x)
is.numeric(na.omit(x))

多种移除NA的方式均失败,怀疑是格式问题。

解决方案

是典型的漏写错误,最初的代码缺少了table()包裹筛选后的向量:

prop.table(table(x[x %in% c('Less than 2 hours', '2-4 hours', '4-6 hours', '6+ hours')]))

输出:

###  Unknown Less than 2 hours         2-4 hours         4-6 hours          6+ hours 
       0.00000000        0.57857722        0.24993238        0.11604003        0.05545037

更高效的方法推荐

如果想直接移除输出中的Unknown列,可以先生成表格后筛选掉该层级,再计算比例:

# 先统计频率并排除Unknown层级
tv_table <- table(x)[names(table(x)) != "Unknown"]
# 计算比例
prop.table(tv_table)

如果是处理数据框,也可以用dplyr包更简洁实现:

library(dplyr)
df %>%
  filter(hourswatching_TV != "Unknown") %>%
  count(hourswatching_TV) %>%
  mutate(prop = n / sum(n))

内容的提问来源于stack exchange,提问作者Adam Swan-Bell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:48:06