2016-10-07 4 views
0

У меня есть кадр, как это:Как удалить строки на основе частоты?

--------------------------------- 
| 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

вы можете прокомментировать, как это отличается от вашего другого недавнего вопроса? –

+0

@BenBolker В другом вопросе я попросил удалить строки на основе уникальных уровней. Достигнув этого, я понял, что он удаляет (из приведенного выше примера) 'a; b' также потому, что они были скудными, но на самом деле эти ключевые слова появляются много, но отдельно. –

+0

@BenBolker Итак, в примере выше 'c' появляется один раз для 6 строк' 1/6 = 1.67'. 'a' и' b' появляются три раза: '3/6 = 0,5'. 'А; b' также появляется только один раз, но a и b отображаются в нескольких строках, поэтому мы должны это делать. –

ответ

3

Мы разделили keyword и получить частоту table и использовать, чтобы удалить строки:

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

'Ошибка в strsplit (df $ keyword,"; "): несимвольный аргумент' также получил ту же ошибку, используя" \\; " –

+1

проверка для чувствительность к регистру. В предыдущем примере в качестве имени столбца было слово «Keyword», у которого есть «ключевое слово». Неверное имя столбца даст результат «NULL»; 'strsplit (NULL,"; ")' дает ошибку «несимвольный аргумент» (вот почему воспроизводимые примеры хороши ...) –

+0

@BenBolker 'tbl <- table (unlist (strsplit (c3ch $ Keywords,"; ")))' проверено и перепроверено, имя столбца - 'Ключевые слова'. Где я могу отправить пример? –

Смежные вопросы