使用您的示例:
v1 <- factor(rep("a1", 100), levels = paste0(letters[1:3], 1))
v2 <- factor(rep("b2", 100), levels = paste0(letters[1:6], 2))
R> table(v1, v2)
v2
v1 a2 b2 c2 d2 e2 f2
a1 0 100 0 0 0 0
b1 0 0 0 0 0 0
c1 0 0 0 0 0 0
然后该rowSums()
函数将计算行总和以供使用。这是有效的,因为表是变相的向量或矩阵。请注意,在下面显示中间步骤的序列中,我们如何通过询问行和是否超过 0 将其转换为逻辑向量。
R> rowSums(tab)
a1 b1 c1
100 0 0
R> rowSums(tab) > 0
a1 b1 c1
TRUE FALSE FALSE
R> tab[rowSums(tab) > 0, ]
a2 b2 c2 d2 e2 f2
0 100 0 0 0 0
以上删除了空维度。如果您想保留表格格式,请添加drop = FALSE
到调用中,但请注意其中的额外内容,
,因为我们想要所有列,因此 之间的空参数, ,
:
R> tab[rowSums(tab) > 0, , drop = FALSE]
v2
v1 a2 b2 c2 d2 e2 f2
a1 0 100 0 0 0 0