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

在R中基于频率条件从xtab列表筛选自变量名称

筛选因变量分组中样本数不足2的自变量

需求说明

从已生成的交叉表列表infcom中,找出在因变量PIM1的任意分组里,存在变量水平样本数不足2的自变量名称(示例中符合条件的是Sex)。

示例数据代码

patientsID<-c(1:10)
PIM1<-c(1,1,0,1,0,1,1,0,0,1)
Age <- c(65, 65, 68, 68, 68, 70, 70, 70, 70, 68)
Sex <- c('M', 'F', 'M', 'M','M', 'M','M', 'M','M', 'M')
Cop <- c(0,1,0,1,0,1,1,0,1,1)
df <- data.frame(patientsID,PIM1,Age,Sex,Cop)
infcom<-apply(df[, -1], 2, function(x) xtabs(~df$PIM1+x))

解决方案代码

# 筛选符合条件的自变量名称
vars_with_small_groups <- names(infcom)[sapply(infcom, function(tab) any(tab < 2))]

# 输出结果
vars_with_small_groups

代码逻辑解释

  • 用sapply遍历infcom列表中的每个交叉表对象
  • 对每个交叉表,通过any(tab < 2)检查是否存在单元格值小于2的情况
  • 提取对应变量名,最终得到所有符合条件的自变量

运行示例代码后,会返回"Sex",原因是Sex的F水平在PIM1分组中仅1个样本,满足样本数不足2的条件。

内容的提问来源于stack exchange,提问作者Amir Habibdoust

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:22