web-dev-qa-db-fra.com

Compter les occurrences de mots dans R

Existe-t-il une fonction permettant de compter le nombre de fois qu'un mot clé est contenu dans un jeu de données?

Par exemple, si dataset <- c("corn", "cornmeal", "corn on the cob", "meal"), le nombre serait 3. 

20
LNA

Supposons pour le moment que vous vouliez le nombre d'éléments contenant "maïs":

length(grep("corn", dataset))
[1] 3

Une fois que vous maîtriserez mieux les bases de R, vous voudrez peut-être regarder le paquet "tm".

EDIT: Je me rends compte que cette fois-ci, vous vouliez du «maïs», mais à l'avenir, vous voudrez peut-être utiliser Word- «du maïs». Bill Dunlap a souligné un modèle plus compact de grep permettant de rassembler des mots entiers:

grep("\\<corn\\>", dataset)
33
42-

Une autre façon assez pratique et intuitive de le faire consiste à utiliser la fonction str_count du paquetage stringr:

library(stringr)
dataset <- c("corn", "cornmeal", "corn on the cob", "meal")

# for mere occurences of the pattern:
str_count(dataset, "corn")
# [1] 1 1 1 0

# for occurences of the Word alone:
str_count(dataset, "\\bcorn\\b")
# [1] 1 0 1 0

# summing it up
sum(str_count(dataset, "corn"))
# [1] 3
28
petermeissner

Vous pouvez également faire quelque chose comme ce qui suit:

length(dataset[which(dataset=="corn")])
1
Junaid

Je le ferais simplement avec une division de cordes comme:

library(roperators)

dataset <- c("corn", "cornmeal", "corn on the cob", "meal")

# for each vector element:
dataset %s/% 'corn'

# for everything:
sum(dataset %s/% 'corn') 
0
Benbob