我有这样的框架:
---------------------------------
| 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)的所有行,该怎么办?
答案 0 :(得分:3)
我们拆分keyword
并使用table
获取频率并使用它来删除行:
tbl <- table(unlist(strsplit(df1$keyword, ";")))
subset(df1, grepl(paste(names(tbl)[tbl>1], collapse="|"), keyword))