有没有一种方法可以自动自动平均R中的多次治疗?

时间:2020-10-19 17:48:48

标签: 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来说并不是最强,所以如果我在格式化或类似操作中出错了,请告诉我。感谢您的宝贵时间!

1 个答案:

答案 0 :(得分:0)

使用dplyrgroup_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