非常抱歉,如果这是一个重新发布的问题,我检查了搜索引擎,但找不到我想要的答案。说我有以下数据集:
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来说并不是最强,所以如果我在格式化或类似操作中出错了,请告诉我。感谢您的宝贵时间!
答案 0 :(得分:0)
使用dplyr
和group_by()
与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