在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
相关产品推荐
相关产品推荐

