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

时间:2018-01-15 10:24:31

标签: r delete-row

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

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

现在,我想在该表上使用assocstatstable2d_summary运行一些统计信息。但首先我要删除空值。这意味着表中的行计数为零,

那么如何摆脱两个频率为0的行(在我的例子中是第2行和第4行)?

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

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

但似乎不可能通过表中的此方法引用变量(列)。

一种有效的方法是“手动”删除行

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

在这个例子中哪个很容易,但我有一些更大的表格。

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

所以希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

我终于找到了我的问题的解决方案,并希望在此处提出。以防其他人遇到这个问题。

首先,我将表格转换为data.frame(就像akrun建议的那样):

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

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

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