我有这个数据集:
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"
))
我可以计算列 CEO 和 ceo 的均值和标准差,例如:
mean(df$ceo, na.rm = T)
[1] 1
和标清,
sd(df$ceo, na.rm = T)
[1] 3
但是当
df %>%
group_by(CAMPAMENTO) %>%
summarise(n = n(),
"CEO" = mean(CEO), "SD CEO" = sd(CEO),
"ceo" = mean(ceo), "SD ceo" = sd(ceo))
结果是
但是没有显示 sd 结果。
我做错了什么?
提前致谢。
最佳答案
问题是 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))
关于r - dplyr 中未显示 SD 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797658/