如何按组平均数据集中的所有列

How to average all columns in dataset by group

我在 R 中使用聚合来尝试总结我的数据集。我目前每个 ID 有 3-5 个观察值,我需要对这些进行平均,以便每个 ID 有 1 个值(平均值)。当我使用聚合时,某些列返回所有 "NA"。

到目前为止,我已经为每一列创建了一个向量以对其进行平均,然后尝试使用合并将所有列组合起来。有些列是字符,所以我尝试使用 as.numeric(as.character(column)) 将它们转换为数字,但是 returns 列中的 NA 太多了。

library(dplyr)
Tr1 <-  data %>% group_by(ID) %>% summarise(mean = mean(Tr1))
Tr2 <-  data %>% group_by(ID) %>% summarise(mean = mean(Tr2))
Tr3 <-  data %>% group_by(ID) %>% summarise(mean = mean(Tr3))
data2 <- merge(Tr1,Tr2,Tr3, by = ID)

从这段代码中我得到错误代码:

There were 50 or more warnings (use warnings() to see the first 50)

然后,

Error in fix.by(by.x, x) : 
'by' must specify one or more columns as numbers, names or logical

我的原始数据集如下所示:

ID Tr1 Tr2 Tr3
1 4 5 6
1 5 3 9
1 3 5 9
4 5 1 8
4 2 6 4 
6 2 8 6
6 2 7 4
6 7 1 9 

我正在尝试找到一个代码,使其看起来像:

ID Tr1 Tr2 Tr3
1 4   4.3 8
4 3.5 3.5 6 
6 3.7 5.3 6.3

您可以使用 summarise_all 而不是多次使用 summarise:

library(dplyr)

data %>%
  group_by(ID) %>% 
  summarise_all(mean)

# A tibble: 3 x 4
     ID   Tr1   Tr2   Tr3
  <int> <dbl> <dbl> <dbl>
1     1  4     4.33  8   
2     4  3.5   3.5   6   
3     6  3.67  5.33  6.33