如何在 R 中的(频率)table 中删除具有特定值的行?

How to delete rows with specific values in a (frequency) table in R?

我用 mytable <- table(VarA, varB) 创建了一个频率 table,如下所示:

     1  2
0    0  5
1    5  7
2    0  0
3    7  9
4    0  0
5    5 10

现在我想 运行 一些关于 table 的 assocstatstable2d_summary 的统计数据。但首先我想删除空值。这意味着 table 中的行计数为零,

那么我怎样才能去掉频率都为 0 的行(在我的示例中是第 2 行和第 4 行)?

对于数据框,我可以使用 subset 函数:

mytable_noZ <- subset(mytbale, mytable$VarA != 0 & mytable$VarB != 0)

但在table.

中似乎无法通过此方法引用变量(列)

一种可行的方法是删除行 "manually"

mytable_noZ <- mytable[-c(2,4),]

在这个例子中这很简单,但我有一些更大的 tables。

我在这里和其他地方搜索了解决方案,但总是只能找到删除数据框中的行、变量和个案的方法。

所以希望有人可以帮助我解决这个问题。

我终于找到了我的问题的解决方案,并想在这里展示它。以防其他人遇到这个问题。

首先,我将 table 转换为 data.frame(如 akrun 建议的那样):

mydf <- as.data.frame.matrix(mytable)

然后我选择要删除的行并将其保存到变量 deleterows 中并使用此变量从原始 table:

中删除行
deleterows <- which(mydf$`1` == 0 & mydf$`2` == 0)
mytable <- mytable[-deleterows,]