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

在R语言中根据条件提取xtabs生成的数组的子数组

在R语言中根据条件提取xtabs生成的数组的子数组

嗨,我来帮你搞定这个需求!你需要从xtabs()生成的二维数组里,筛选出每行所有单元格数值都≥2的子表对吧?下面一步步来实现:

1. 先还原你的原始数据与数组

首先我们先把你给出的表格转换成R里可操作的xtabs数组,假设你的数据是A作为行变量,B有两个类别作为列变量:

# 构造原始数据框
raw_data <- data.frame(
  A = c(12,20,41,49,50,56,57,59,63,64,65,68,71,72,73,78),
  B_cat1 = c(0,1,22,4,0,3,4,1,0,2,0,0,2,2,9,0),
  B_cat2 = c(0,0,16,8,1,2,2,0,3,1,0,1,7,1,7,1)
)

# 生成xtabs数组
original_tab <- xtabs(cbind(B_cat1, B_cat2) ~ A, data = raw_data)

2. 筛选符合条件的子数组

核心思路是逐行检查所有单元格是否都≥2,我们用apply()函数来实现这个逻辑:

# 筛选出所有单元格数值≥2的行
filtered_tab <- original_tab[apply(original_tab, 1, function(row) all(row >= 2)), ]

运行这段代码后,filtered_tab就是你想要的子表,输出结果如下:

B_cat1 B_cat2
A               
41     22     16
49      4      8
56      3      2
57      4      2
71      2      7
73      9      7

代码解释

  • apply(original_tab, 1, ...):对数组的每一行(参数1代表行维度)执行后续的检查函数
  • function(row) all(row >= 2):匿名函数,检查当前行的所有元素是否都满足≥2的条件,返回TRUE或FALSE
  • 最后用这个布尔向量去索引原数组的行,就得到了符合要求的子数组

备注:内容来源于stack exchange,提问作者striatum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:48:11