如何在 R 数据框中根据单个组值查找平均值?


为了根据 R 数据框中的单个组值查找平均值,我们可以使用 mean 函数并通过单个方括号进行子集化。

例如,如果我们有一个名为 df 的数据框,其中包含一个分类列(例如 C),该列具有三个组 Low、Medium、High 和一个数值列(例如 Num),则可以通过使用以下命令找到 Num 的 Medium 组的平均值:

mean(df$C[df$Num=="Medium"])

示例 1

以下代码段创建了一个示例数据框:

Group<-sample(LETTERS[1:4],20,replace=TRUE)
Score<-rpois(20,5)
df1<-data.frame(Group,Score)
df1

创建了以下数据框:

 Group Score
1  D   7
2  D   6
3  D   3
4  B   5
5  C   7
6  A   2
7  D   7
8  D   5
9  C   1
10 C   6
11 C   9
12 D   3
13 C   6
14 B   8
15 C   2
16 B   6
17 D   7
18 C   8
19 A  12
20 B   3

要获取 A 组的 Score 平均值,请将以下代码添加到上面的代码段中:

Group<-sample(LETTERS[1:4],20,replace=TRUE)
Score<-rpois(20,5)
df1<-data.frame(Group,Score)
mean(df1$Score[df1$Group=="A"])

输出

如果将以上所有代码段作为单个程序执行,则会生成以下输出:

[1] 7

示例 2

以下代码段创建了一个示例数据框:

Class<-sample(c("I","II","III"),20,replace=TRUE)
Price<-sample(10:20,20,replace=TRUE)
df2<-data.frame(Class,Price)
df2

创建了以下数据框:

 Class Price
1   II  19
2    I  15
3    I  14
4    I  19
5  III  13
6    I  17
7  III  12
8    I  10
9   II  18
10  II  11
11  II  13
12   I  11
13  II  12
14 III  11
15  II  13
16  II  15
17 III  10
18   I  17
19 III  18
20   I  14

要获取 Class I 的 Price 平均值,请将以下代码添加到上面的代码段中:

Class<-sample(c("I","II","III"),20,replace=TRUE)
Price<-sample(10:20,20,replace=TRUE)
df2<-data.frame(Class,Price)
mean(df2$Price[df2$Class=="I"])

输出

如果将以上所有代码段作为单个程序执行,则会生成以下输出:

[1] 14.625

示例 3

以下代码段创建了一个示例数据框:

Category<-sample(c("First","Second","Third","Fourth"),20,replace=TRUE)
Sales<-sample(10:50,20)
df3<-data.frame(Category,Sales)
df3

创建了以下数据框:

 Category Sales
1  First   49
2  Fourth  43
3  Second  44
4  Third   35
5  Fourth  21
6  Third   50
7  First   45
8  Fourth  15
9  Second  20
10 First   11
11 First   17
12 Fourth  37
13 Third   48
14 Second  32
15 Fourth  10
16 Fourth  38
17 First   40
18 First   22
19 Second  25
20 First   47

要获取 First 组的 Sales 平均值,请将以下代码添加到上面的代码段中:

Category<-sample(c("First","Second","Third","Fourth"),20,replace=TRUE)
Sales<-sample(10:50,20)
df3<-data.frame(Category,Sales)
mean(df3$Sales[df3$Category=="First"])

输出

如果将以上所有代码段作为单个程序执行,则会生成以下输出:

[1] 33

更新于: 2021年11月10日

810 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告