2017-10-17 1 views
1

Je cet ensemble de données:valeur SD non montré dans dplyr

structure(list(CAMPAMENTO = c("Futura Esperanza", "Futura Esperanza", 
"Futura Esperanza", "Futura Esperanza", "Futura Esperanza", "Nuevo Amanecer", 
"Nuevo Amanecer", "Nuevo Amanecer", "Nuevo Amanecer", "Nuevo Amanecer", 
"Nuevo Amanecer", "Laderas de Angelmó", "Laderas de Angelmó", 
"Laderas de Angelmó", "Laderas de Angelmó", "Laderas de Angelmó", 
"Laderas de Angelmó", "Laderas de Angelmó", "Pelluhuin 1", 
"Pelluhuin 1", "Pelluhuin 1", "Pelluhuin 1", "Pelluhuin 1", "Pelluhuin 1", 
"Pelluhuin 1", "Pelluhuin 2", "Pelluhuin 2", "Pelluhuin 2", "Pelluhuin 2", 
"Pelluhuin 2", "Mediaguas", "Mediaguas", "Mediaguas", "Mediaguas", 
"Mediaguas", "Mediaguas", "Mediaguas", "Mediaguas", "Mediaguas", 
"Mediaguas"), CEO = c(1L, 4L, 2L, 0L, 0L, 0L, 0L, 1L, 2L, 0L, 
0L, 2L, 2L, 0L, 6L, 0L, 1L, 0L, 1L, 3L, 2L, 0L, 0L, 0L, 0L, 0L, 
0L, 3L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 2L, 3L), ceo = c(0L, 
0L, 0L, 1L, 5L, 0L, 0L, 2L, 0L, 4L, 9L, 0L, 0L, 0L, 0L, 6L, 1L, 
0L, 0L, 0L, 3L, 2L, 8L, 7L, 3L, 1L, 0L, 2L, 7L, 4L, 0L, 1L, 2L, 
0L, 1L, 0L, 1L, 3L, 0L, 0L)), class = c("tbl_df", "tbl", "data.frame" 
), row.names = c(NA, -40L), .Names = c("CAMPAMENTO", "CEO", "ceo" 
)) 

Je peux calculer la moyenne et sd des colonnes PDG et chef de la direction, par exemple:

mean(df$ceo, na.rm = T) 
[1] 1 

Et sd,

sd(df$ceo, na.rm = T) 
[1] 3 

Mais quand

df %>% 
    group_by(CAMPAMENTO) %>% 
    summarise(n = n(), 
      "CEO" = mean(CEO), "SD CEO" = sd(CEO), 
      "ceo" = mean(ceo), "SD ceo" = sd(ceo)) 

le résultat est

enter image description here

Mais aucun résultat sd est spectacle.

Qu'est-ce que je fais mal?

Merci d'avance.

+0

probablement parce qu'ils sont des valeurs entières, essayez de convertir ces CLO 'as.double' –

+0

non,' sd', 'mean' et ainsi de suite essayer de coherce si possible. Les Intergers ne posent aucun problème car ils sont simplement cohérents pour doubler. –

Répondre

1

Le problème est que le calcul dans summarise est effectué consécutivement. sd(CEO) par exemple est basé sur la nouvelle colonne précédemment construite mean(CEO), d'où le NA ou plus précis NaN, puisque sd(mean(d$CEO)) est NA.

Nommer vos colonnes fixe ceci:

## Not working 
df %>% 
    group_by(CAMPAMENTO) %>% 
    summarise(n = n(), 
      "CEO" = mean(CEO), 
      "SD CEO" = sd(CEO), 
      "ceo_mean" = mean(ceo), 
      "SD ceo" = sd(ceo)) 

## Working 
df %>% 
    group_by(CAMPAMENTO) %>% 
    summarise(n = n(), 
      "Mean_CEO" = mean(CEO), 
      "SD CEO" = sd(CEO), 
      "Mean_ceo" = mean(ceo), 
      "SD ceo" = sd(ceo))