如何根据级别频率删除行?

时间:2016-10-07 14:56:19

标签: r

我有这样的框架:

 ---------------------------------
| keyword | has_a | has_b | has_c |
|---------+-------+-------+-------|
| a; b    |   1   |   1   |   0   |
| c       |   0   |   0   |   1   |
| a       |   1   |   0   |   0   |
| a       |   1   |   0   |   0   |
| b       |   0   |   1   |   0   |
| b       |   0   |   1   |   0   |
 ---------------------------------

我想删除包含仅出现一次的关键字的行。例如,在上面的示例中,我希望删除c行,但不删除a; b行。

我发现通过运行summary,我可以获得二进制列的方法。仅显示一次的关键字列的平均值为0.0006009615(有1664行)。

有没有办法根据这个意思去除因子水平?如果我想删除关键字频率为1到5(0.003004808 - 0.0006009615)的所有行,该怎么办?

1 个答案:

答案 0 :(得分:3)

我们拆分keyword并使用table获取频率并使用它来删除行:

 tbl <- table(unlist(strsplit(df1$keyword, ";")))
 subset(df1, grepl(paste(names(tbl)[tbl>1], collapse="|"), keyword))