mutate_at mutate funcion cheatsheet r dplyr idioms summarization

mutate - Obtenga el conteo de dplyr de forma clara y legible



mutate_at dplyr (1)

¿Qué tal esta opción?

data %>% # take the data.frame "data" filter(!is.na(aa)) %>% # Using "data", filter out all rows with NAs in aa group_by(bb) %>% # Then, with the filtered data, group it by "bb" summarise(Unique_Elements = n_distinct(aa)) # Now summarise with unique elements per group #Source: local data frame [3 x 2] # # bb Unique_Elements #1 a 2 #2 b 1 #3 c 1

Use el filter para filtrar las filas donde a tiene NA, luego agrupe los datos por columna bb y luego resuma contando el número de elementos únicos de la columna aa por grupo de bb .

Como puede ver, estoy usando el operador de tubería %>% que puede usar para "conectar" o "encadenar" comandos al usar dplyr. Esto le ayuda a escribir un código fácil de leer porque es más natural, por ejemplo, escribe el código de la izquierda para escribir y de arriba a abajo y no anidado profundamente desde dentro (como en su código de ejemplo).

Editar:

En la primera parte de su pregunta, usted escribió:

Sé que puedo hacer cosas como:

by_bb<-group_by(data, bb, add = TRUE) summarise(by_bb, mean(aa, na.rm=TRUE), max(aa), sum(!is.na(aa)), length(aa))

Aquí hay otra opción para hacer eso (aplicando varias funciones a la (s) misma (s) columna (s)):

data %>% filter(!is.na(aa)) %>% group_by(bb) %>% summarise_each(funs(mean, max, sum, n_distinct), aa) #Source: local data frame [3 x 5] # # bb mean max sum n_distinct #1 a 2 3 4 2 #2 b 2 2 2 1 #3 c 4 4 4 1

Soy nuevo usando dplyr, necesito calcular los distintos valores en un grupo. Aquí hay un ejemplo de tabla:

data=data.frame(aa=c(1,2,3,4,NA), bb=c(''a'', ''b'', ''a'', ''c'', ''c''))

Sé que puedo hacer cosas como:

by_bb<-group_by(data, bb, add = TRUE) summarise(by_bb, mean(aa, na.rm=TRUE), max(aa), sum(!is.na(aa)), length(aa))

Pero si quiero contar los elementos únicos?

Puedo hacer:

> summarise(by_bb,length(unique(unlist(aa)))) bb length(unique(unlist(aa))) 1 a 2 2 b 1 3 c 2

y si quiero excluir las NA, puedo hacerlo:

> summarise(by_bb,length(unique(unlist(aa[!is.na(aa)])))) bb length(unique(unlist(aa[!is.na(aa)]))) 1 a 2 2 b 1 3 c 1

Pero es un poco ilegible para mí . ¿Hay una mejor manera de hacer este tipo de resumen?