1

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!

Henrik
  • 61,039
  • 13
  • 131
  • 152
jdfinch3
  • 503
  • 7
  • 18

2 Answers2

3

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"
nrussell
  • 17,956
  • 4
  • 46
  • 60
2

You could also factor the split vector then tabulate.

f <- factor(strsplit(zzz, " ")[[1]])
levels(f)[which.max(tabulate(f))]
# [1] "jan"
Rich Scriven
  • 93,629
  • 10
  • 165
  • 233