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

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

例如,如果我们有一个名为 df 的数据框,其中包含一个分类列 C 具有三组低、中、高和一个数字列说 Num,那么可以使用下面给出的命令找到中组的 Num 平均值 -

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 组得分的平均值,请将以下代码添加到上述代码段中 -

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

要获得 I 类价格的平均值,请将以下代码添加到上述代码段中 -

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

要获得 Group 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