如何按组平均数据集中的所有列
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
我在 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