如何在 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 的 assocstats
和 table2d_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,]
我用 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 的 assocstats
和 table2d_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,]