SD 值未显示在 dplyr 中

ser*_*ibe 2 r 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"
))
Run Code Online (Sandbox Code Playgroud)

我可以计算 CEO 和 CEO 列的均值和标准差,例如:

mean(df$ceo, na.rm = T)
[1] 1
Run Code Online (Sandbox Code Playgroud)

和sd,

sd(df$ceo, na.rm = T)
[1] 3
Run Code Online (Sandbox Code Playgroud)

但当

df %>% 
  group_by(CAMPAMENTO) %>% 
  summarise(n = n(), 
            "CEO" = mean(CEO), "SD CEO" = sd(CEO),
            "ceo" = mean(ceo), "SD ceo" = sd(ceo))
Run Code Online (Sandbox Code Playgroud)

结果是

在此处输入图片说明

但没有显示 sd 结果。

我做错了什么?

提前致谢。

Man*_*l R 8

问题是计算summarise是连续进行的。sd(CEO)例如基于先前构建的新列mean(CEO),因此NA或更精确NaN,因为sd(mean(d$CEO))NA

命名你的列可以解决这个问题:

## 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))
Run Code Online (Sandbox Code Playgroud)