【发布时间】:2021-07-06 04:12:20
【问题描述】:
更新:
嗨!我有这样的数据。
structure(list(V1QB10 = c(1, 1, 1, 2, 1, 3, 3, 1, 4, 2), V1QB12A = c(2,
1, 2, 3, NA, 2, 2, 3, 2, 2), V1QB12B = c(NA, 2, 2, 2, 2, 1, 2,
2, 2, 2), V1QB12C = c(NA, 1, 2, 2, 2, 1, 2, 2, 2, 2), sum = c(NA,
4, 6, 7, NA, 4, 6, 7, 6, 6)), row.names = c(NA, 10L), class = "data.frame")
这是数据的样子:
V1QB10 V1QB12A V1QB12B V1QB12C sum
1 1 2 NA NA NA
2 1 1 2 1 4
3 1 2 2 2 6
4 2 3 2 2 7
5 1 NA 2 2 NA
6 3 2 1 1 4
7 3 2 2 2 6
8 1 3 2 2 7
9 4 2 2 2 6
10 2 2 2 2 6
变量“sum”是“V1QB12*”的总和。 现在我正在尝试通过“V1QB10”计算“总和”的平均值:
dt %>%
group_by(V1QB10) %>%
dplyr::summarise(n=n(), mean=mean(sum), sd=sd(sum)) %>%
as.data.frame()
我希望计算如下:
对于V1QB10==1,n为3(去掉“V1QB12*”中带有NA的2个观测值),求和“sum”:4+6+7=17,然后计算均值:17/3 , 和 sd。
但我发现我一直在平均 17/5。尝试用n=n(V1QB12A) 替换代码也没有奏效。
可能是我想多了这个问题。我要怎么修呢?
谢谢!
【问题讨论】:
-
你能给出这个例子的预期输出吗?
-
V1QB10 有一行值为 4,其中 sum 为 6。因此,其平均 sum 也是 6,但对于长度为 1 的向量,sd 未定义。较短的等效项:
sd(6)= NA -
@RonakShah 嗨,我刚刚编辑了问题。
-
只需在
mean中添加na.rm = TRUE即可忽略NA值?mean=mean(sum, na.rm. =TRUE) -
这肯定是重复的。