【发布时间】:2020-12-29 03:10:23
【问题描述】:
虽然之前使用过 dplyr,但我遇到了目前我还没有充分理解的问题。
我正在使用的研究数据集的一部分有 +2500 个不同的行。 这些行是来自一项研究的 515 所房屋的不同受访者。
我想总结受访者在学校度过的年数(第 [, 7] 列)并按房屋 ID 分组(第 [, 26] 列)。所有学年的平均成绩为 3.65(样本取自乌干达)。
现在,当我运行以下代码时:
library(dplyr)
df_house %>%
dplyr::group_by(House = df_house[, 26]) %>%
dplyr::summarise(Avg_school = mean(df_house[,7], na.rm = TRUE))
我得到以下结果:
A tibble: 510 x 2
House Avg_school
<dbl> <dbl>
1 1 3.65
2 2 3.65
3 3 3.65
4 4 3.65
5 5 3.65
6 6 3.65
7 7 3.65
8 8 3.65
9 9 3.65
10 10 3.65
# ... with 500 more rows
我有两个问题: 首先,显然summary 并没有总结每个house_id 的平均值。 其次,我只得到了 510 个组,而不是预期的 515 个不同的房子。
我查看了 class() 和 typeof() 函数以确保它们既是数字又是双精度。
有人知道为什么 group_by 和 summarise 会这样吗?
【问题讨论】:
-
不要在
group_by和summarise中使用列号,而是使用它们的名称。像这样df_house %>% dplyr::group_by(house_id) %>% dplyr::summarise(Avg_school = mean(school, na.rm = TRUE)) -
谢谢,这确实是我做错了。
标签: r dplyr group-by summarize