I have an R script that filters data to a new data frame. Between other things it filters the most repeated word as follows:
| Word | Times |
|---|---|
| oliver | 3 |
| great | 8 |
| jacob | 2 |
| fantastic | 6 |
Is there a way in R that given a list of names, names <- c('oliver','jacob','harry', 'jack'), I can filter the last data frame to something like this?
(That takes the names, count them, and then add them to a new row named names that counts the times all the names appeared)
| Word | Times |
|---|---|
| names | 5 |
| great | 8 |
| fantastic | 6 |
CodePudding user response:
I use x instead of names.
Base R way
x <- c('oliver','jacob','harry', 'jack')
y <- 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
CodePudding user response:
A dplyr solution
names <- c('oliver','jacob','harry', 'jack')
df %>%
summarize_each(funs(ifelse(Word %in% names, "names", .))) %>%
group_by(Word) %>%
summarize(sum(Times))
# A tibble: 3 × 2
Word `sum(Times)`
<chr> <dbl>
1 fantastic 6
2 great 8
3 names 5
