# How to calculate the Frequency of specific words across ALL rows?

I am using this dataset UCI Machine Learning Repository: Eco-hotel Data Set

I am trying to figure out how to count the frequency of certain words like "room" or "vacation" within each row. I figured out the code to make it work for columns, but I need it for rows.

There are 16 columns in this dataset, but I need the frequency of certain words for each row. If anyone could lend some insights, it would be greatly appreciated.

Here is my code:
library(tidyverse)
EcoResort %>%
summarize(across(everything(), ~ sum(str_detect(., 'room'))))

i have created and imaginary dataset for repex.

ps: assuming the dataset has the first column is as id, and the other columns are some strings like reviews.

``````library(tidyverse)

review1 <- c( "clean room nice vacation", "empty mini bar", "nice hotel", "bad vacation", "nice view in the room")
review2 <- c( "tidy room", "pool is nice", "nice vacation", "bad service", "awful breakfast")

df <- tibble(reviewid = 1:5,
r1 = review1 ,
r2 = review2
)

word_freq_per_row <- function(df, query){
if(!is.character(query)){stop("query must be charcter")}
df %>%
rowwise(1) %>%
summarize(across(everything(), ~ sum(str_detect(., query)))) %>%
mutate(num_of_occurences = sum(c_across())) %>%
select(reviewid, num_of_occurences)
}

word_freq_per_row(df, "room")
# # A tibble: 5 x 2
# # Groups:   reviewid [5]
# reviewid num_of_occurences
# <int>             <int>
# 1        1                 2
# 2        2                 0
# 3        3                 0
# 4        4                 0
# 5        5                 1

word_freq_per_row(df, "nice")
# # A tibble: 5 x 2
# # Groups:   reviewid [5]
# reviewid num_of_occurences
# <int>             <int>
# 1        1                 1
# 2        2                 1
# 3        3                 2
# 4        4                 0
# 5        5                 1
``````

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.