我正在尝试计算RStudio中发现的出生体重数据集(birthwt
)的描述性统计数据。但是,我只对一些变量感兴趣:age
,ftv
,ptl
和lwt
。
这是我到目前为止的代码:
library(MASS)
library(dplyr)
data("birthwt")
grouped <- group_by(birthwt, age, ftv, ptl, lwt)
summarise(grouped,
mean = mean(bwt),
median = median(bwt),
SD = sd(bwt))
它给了我一张漂亮的印刷表,但只填写了有限数量的SD,剩下的就是NA
。我无法解决为什么或如何解决它!
答案 0 :(得分:1)
某些组的行数为1.
grouped %>%
summarise(n = n())
# A tibble: 179 x 5
# Groups: age, ftv, ptl [?]
# age ftv ptl lwt n
# <int> <int> <int> <int> <int>
# 1 14 0 0 135 1
# 2 14 0 1 101 1
# 3 14 2 0 100 1
# 4 15 0 0 98 1
# 5 15 0 0 110 1
# 6 15 0 0 115 1
# 7 16 0 0 110 1
# 8 16 0 0 112 1
# 9 16 0 0 135 2
#10 16 1 0 95 1
根据?sd
,
长度为一的向量的标准偏差为NA。
这导致NA
的{{1}}值,其中只有一个元素
答案 1 :(得分:1)
我偶然发现这里有另一个原因,对我来说,答案来自docs:
# BEWARE: reusing variables may lead to unexpected results
mtcars %>%
group_by(cyl) %>%
summarise(disp = mean(disp), sd = sd(disp))
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 3 x 3
#> cyl disp sd
#> <dbl> <dbl> <dbl>
#> 1 4 105. NA
#> 2 6 183. NA
#> 3 8 353. NA
所以,如果有人和我有同样的原因,与其重用一个变量,不如创建一个新变量:
mtcars %>%
group_by(cyl) %>%
summarise(
disp_mean = mean(disp),
disp_sd = sd(disp)
)
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 3
cyl disp_mean disp_sd
<dbl> <dbl> <dbl>
1 4 105. 26.9
2 6 183. 41.6
3 8 353. 67.8