2011-10-16 12 views
16

¿Existe alguna función para contar el número de veces que una palabra clave determinada está contenida en un conjunto de datos?Ocurrencias de palabra de recuento en R

Por ejemplo, si dataset <- c("corn", "cornmeal", "corn on the cob", "meal") el recuento sería 3.

Respuesta

29

Déjenos por el momento asumen desea la cantidad de elemento que contiene "maíz":

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

Después de que los fundamentos de R abajo es mejor que vea el paquete "tm".

EDIT: Me doy cuenta de que esta vez querías cualquier - "maíz" pero en el futuro es posible que desees obtener la palabra - "maíz". Más en r-ayuda Bill Dunlap señaló un patrón grep más compacto para la recopilación de palabras completas:

grep("\\<corn\\>", dataset) 
+0

se puede dividir en los vectores "", hacer uniqu e y ejecuta la tabla en todo el asunto. :) –

+3

Derecha. Que resalta la ambigüedad de la pregunta original. No pude entender por qué 4 era el número correcto. Su método devolvería 2 por "maíz", 1 por "comida" y 1 por "harina de maíz". La forma greppish de contar palabras delimitadas por espacios "maíz" podría ser: length (grep ("^ maíz $ |^maíz | maíz $", conjunto de datos)) –

+0

Eso fue un error tipográfico, lo siento. El recuento sería 3. – LNA

26

Otra bastante cómoda e intuitiva manera de hacerlo es utilizar la función str_count del paquete 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 
1

también puede hacer algo como lo siguiente:

length(dataset[which(dataset=="corn")]) 
Cuestiones relacionadas