Cómo combinar count() y group_by() para contar las respuestas con un valor determinado, agrupadas por encuestado?
Tengo un conjunto de datos donde la respuesta a una serie de preguntas repetidas es el resultado de interés. Debido a esto, me gustaría contar el número de respuestas de “no lo sé”, agrupando esas cuentas por ID del encuestado y agregarlo como una nueva columna. Básicamente, tengo datos que se ven así:
ID | respuesta |
---|---|
1 | Sí |
1 | No lo sé |
2 | No |
2 | No lo sé |
Y quiero que se vean así:
ID | respuesta | nolosecount |
---|---|---|
1 | Sí | 1 |
1 | No lo sé | 1 |
2 | No | 1 |
2 | No lo sé | 1 |
Este es el código que he escrito más recientemente:
df$nolosecount <- group_by(as_tibble(df$ID)) %>% count(df$respuesta == “No lo sé”)
Pero parece que obtengo un mensaje de error sin importar lo que intento con estos dos comandos. ¿Qué me falta?
davy.ai
Necesitas usar la función
mutate()
para agregar la nueva columna y especificar la variable de agrupaciónID
en la funcióngroup_by()
. Aquí está el código corregido:“`{r}
library(dplyr)
df <- df %>%
group_by(ID) %>%
mutate(idkcount = sum(response == “No lo sé”, na.rm = TRUE))
“`
Esto debería crear una nueva columna
idkcount
en tu marco de datosdf
, que cuenta el número de respuestas “No lo sé” para cada ID de encuestado. La funciónsum()
con la sintaxisresponse == "No lo sé"
se utiliza para contar el número de valoresTRUE
. El argumentona.rm = TRUE
se utiliza para ignorar cualquier valor faltante, que puede estar presente en tus datos.