r - 按 R 中的组计算平均值
问题描述
我想计算大陆每年的平均值。
结果将是这样的:
Mainland 1990 1991 1992 1993 ...
Europe 1 55 66 678
Asia 43 6 7
Oceania .
Americas .
Africa .
首先,我选择了我需要的列,然后尝试使用 R 中的 dplyr 包进行计算,但它不起作用。
gr1 <- homicide_ratios %>%
select('Mainland', matches("[0-9]{4}"))
gr1 %>%
group_by(Mainland) %>%
summarise(media = mean(gr1[, 2:ncol(gr1)], na.rm = T))
我给你看数据集:
提前致谢。
解决方案
思路是将数据的格式从宽格式改为长格式,然后对数据进行分组,总结如下;
library(dplyr)
library(tidyr)
homicide_ratios <-
data.frame(
Mainland = c("Europe", "Asia", "Oceania", "Americas", "Africa"),
"1990" = c(1, 2, 3, 4, 5),
"1991" = c(1, 2, 3, 4, 5),
"1992" = c(1, 2, 3, 4, 5),
"1993" = c(1, 2, 3, 4, 5)
)
homicide_ratios %>%
gather(key = "year", value = "rate", -Mainland) %>%
group_by(Mainland, year) %>%
summarize(average = mean(rate))
# # A tibble: 20 x 3
# # Groups: Mainland [5]
# Mainland year average
# <fct> <chr> <dbl>
# Africa X1990 5
# Africa X1991 5
# Africa X1992 5
# Africa X1993 5
# Americas X1990 4
# Americas X1991 4
# Americas X1992 4
推荐阅读
- javascript - 在 .submit() 和 fetch(method: 'POST') 之后使用 GET 请求刷新页面
- flutter - 获得未来
来自 RangeSlider 中的异步函数 - css - 你如何让引导列连续滚动而不是换行
- filepond - Filepond 预览 Excel 上传
- javascript - 带有大于 (>) 符号的 EJS HTML 渲染
- google-apps-script - Google 表格(使用脚本隐藏/取消隐藏行)
- python - Google Ads API V6 响应在第一次循环迭代后遇到“x 元数据元素被泄露”
- scala - scala检查中生成的实体数量
- python - 在python中以句子的单词作为键,单词从1开始的位置数作为值构建字典
- angular - 获取 ENOENT:Angular 11 项目中没有这样的文件或目录,lstat 'C:\Users\nitrathod\Desktop\Angular\node_modules'