r - 有没有办法在 R 中一次自动平均多个治疗?
问题描述
非常抱歉,如果这是一个重新发布的问题,我检查了搜索引擎并找不到我正在寻找的答案。假设我有以下数据集:
Plot Plant Count
1 101 1 9
2 101 2 15
3 101 3 5
4 101 4 15
5 101 5 26
6 102 1 9
7 102 2 26
8 102 3 9
9 102 4 15
10 102 5 17
11 103 1 12
12 103 2 6
13 103 3 22
14 103 4 12
15 103 5 6
我想平均每个地块的 5 个植物之间的“计数”数。但是,在我的真实数据集中,我有超过 3 个图。有没有办法编写我的代码,以便它一次自动平均我的所有图?我想学习编写一个代码,让我尽可能有效地获得每个情节的平均值。任何帮助将不胜感激。
我对stackoverflow相当陌生,并且不是最强大的R,所以如果我在格式或类似方面犯了错误,请告诉我。谢谢你的时间!
解决方案
尝试dplyr
使用group_by()
and summarise()
。这里的代码:
library(dplyr)
#Data
newdf <- df %>% group_by(Plot) %>% summarise(Avg=mean(Count))
输出:
# A tibble: 3 x 2
Plot Avg
<int> <dbl>
1 101 14
2 102 15.2
3 103 11.6
使用的一些数据:
#Data
df <- structure(list(Plot = c(101L, 101L, 101L, 101L, 101L, 102L, 102L,
102L, 102L, 102L, 103L, 103L, 103L, 103L, 103L), Plant = c(1L,
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), Count = c(9L,
15L, 5L, 15L, 26L, 9L, 26L, 9L, 15L, 17L, 12L, 6L, 22L, 12L,
6L)), class = "data.frame", row.names = c("1", "2", "3", "4",
"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"))
如果你想保持你的变量mutate()
以这种方式使用:
#Code
newdf <- df %>% group_by(Plot) %>% mutate(Avg=mean(Count))
输出:
# A tibble: 15 x 4
# Groups: Plot [3]
Plot Plant Count Avg
<int> <int> <int> <dbl>
1 101 1 9 14
2 101 2 15 14
3 101 3 5 14
4 101 4 15 14
5 101 5 26 14
6 102 1 9 15.2
7 102 2 26 15.2
8 102 3 9 15.2
9 102 4 15 15.2
10 102 5 17 15.2
11 103 1 12 11.6
12 103 2 6 11.6
13 103 3 22 11.6
14 103 4 12 11.6
15 103 5 6 11.6
或使用base R
:
#Base R
newdf <- aggregate(Count~Plot,data=df,mean)
输出:
Plot Count
1 101 14.0
2 102 15.2
3 103 11.6
推荐阅读
- javascript - 在 vues 模板中转义几个引用级别
- docker - 在 GitLab CI 中运行 'docker-compose exec ...'
- keycloak - Keycloak 客户端设置,我需要哪些 URL?
- git - 由于实际上不存在的冲突,无法推动掌握
- getstream-io - GetStream - 我如何按组查询聚合活动
- smartsheet-api - 区分下拉多选(未定义选项)与常规文本列
- c++ - c++: 我如何创建一个收据来显示所选项目及其数量、价格和总价
- android - 如何像这样创建底部窗口,当单击或移动标记时,窗口也会在谷歌地图中移动,反之亦然
- java - 如何将复杂对象及其属性的列表传递和访问到freemarker
- php - 保存后编辑不显示所选输入