#r #dataframe #count
Вопрос:
Я написал сценарий R, который фильтрует данные и сохраняет их в новом фрейме данных. Помимо прочего, он фильтрует наиболее часто используемые слова следующим образом:
Word Times Oliver 3 Great 8 Jacob 2 Fantastic 6
Есть ли способ в R отфильтровать последний кадр данных, чтобы он выглядел так, учитывая список имен?
(Это берет имена, подсчитывает их, а затем добавляет их в новую строку с именем имена, которая подсчитывает время появления всех имен)
Word Times Names 5 # Oliver [3] Jacob [2] Great 8 Fantastic 6
Ответ №1:
Я использую x
вместо names
.
Базовый R
способ
x lt;- c('oliver','jacob','harry', 'jack') y lt;- sum(df$Times[df$Word %in% x]) rbind(c("names", y), df[!(df$Word %in% x), ]) Word Times 1 names 5 2 great 8 4 fantastic 6
Ответ №2:
Решение dplyr
names lt;- c('oliver','jacob','harry', 'jack') df %gt;% summarize_each(funs(ifelse(Word %in% names, "names", .))) %gt;% group_by(Word) %gt;% summarize(sum(Times)) # A tibble: 3 × 2 Word `sum(Times)` lt;chrgt; lt;dblgt; 1 fantastic 6 2 great 8 3 names 5