jdfinch3
jdfinch3

Reputation: 513

Find most common word in a character string

I have a character string and need to find the word in the string that occurs most frequently. I've tried every variation of max, which.max, sort, order, and rank that I can think of - but can't seem to get the syntax worked out correctly. I've also tried all of the methods found here: Calculate frequency of occurrence in an array using R

Example code:

zzz <- c("jan", "feb", "jan", "mar", "mar", "jan", "feb") #random example data
zzz <- paste(zzz, collapse=" ") #make data look like what I'm working with
zzz
# [1] "jan feb jan mar mar jan feb"

I this example, "jan" occurs most frequently.

Any suggestions are greatly appreciated!

Upvotes: 1

Views: 1316

Answers (2)

Rich Scriven
Rich Scriven

Reputation: 99391

You could also factor the split vector then tabulate.

f <- factor(strsplit(zzz, " ")[[1]])
levels(f)[which.max(tabulate(f))]
# [1] "jan"

Upvotes: 2

nrussell
nrussell

Reputation: 18612

How about this:

Freq <- table(unlist(strsplit(zzz," ")))
# > Freq
# feb jan mar 
# 2   3   2 
> Freq[which.max(Freq)]
jan 
  3

If you just want the actual word as output,

> names(Freq)[which.max(Freq)]
[1] "jan"

Upvotes: 3

Related Questions