Vorrei calcolare i mezzi di un frame di dati per ciascun fattore, ma solo se sono soddisfatte determinate condizioni. Ad esempio, ho questo frame di dati:Calcolo condizionale della media
> df <- data.frame(name = rep(c("A", "B", "C"), 20),
variable1 = rep(c(1, 1, 1, 1, 1, NA), 10),
variable2 = rep(c(2, NA, 2, 2, 2, 2), 10),
variable3 = rep(c(NA, 3, 3, 3, 3, 3), 10))
> table(df$name, df$variable1)
1
A 20
B 20
C 10
> table(df$name, df$variable2)
2
A 20
B 10
C 20
> table(df$name, df$variable3)
3
A 10
B 20
C 20
posso facilmente calcolare mezzi per ogni variabile con dplyr
in modo seguente:
means <- df %>%
group_by(name) %>%
summarise_each(funs(mean(., na.rm = TRUE)))
> means
Source: local data frame [3 x 4]
name variable1 variable2 variable3
1 A 1 2 3
2 B 1 2 3
3 C 1 2 3
Tuttavia, ciò che voglio è solo calcolare mezzi caso sono 11 o più osservazioni, altrimenti inserisci NA
nelle rispettive celle. In altre parole, il risultato dovrebbe essere così:
name variable1 variable2 variable3
1 A 1 2 NA
2 B 1 NA 3
3 C NA 2 3
E 'stato veloce! Grazie mille. C'è un modo per fare lo stesso in dplyr? Non è una condizione rigorosa, solo per curiosità. –
@DavidArenburg Grazie, stavo aggiornando la funzione. – akrun
@MikhailBalyasin trovi la sintassi 'dplyr' più intuitiva? –