在 R 数据框中查找以特定字符串开头的列的每行平均值。


为了在 R 数据框中查找以特定字符串开头的列的每行平均值,我们可以使用 dplyr 包的 mutate 函数以及 rowMeans 函数。

例如,如果我们有一个名为 df 的数据框,其中包含三列,例如 x1_x2、x1_x3、x1_x2,并且我们想要查找列 x1_x2 和 x1_x3 的每行平均值,那么我们可以使用以下命令:

df%%mutate(X1_Cmbn=select(.,starts_with("x1_")) %% rowMeans())

示例 1

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

Grp1_x<-rpois(20,2)
Grp1_y<-rpois(20,5)
Grp2_y<-rpois(20,5)
Grp2_x<-rpois(20,2)
df1<-data.frame(Grp1_x,Grp1_y,Grp2_y,Grp2_x)
df1

创建了以下数据框

  Grp1_x Grp1_y Grp2_y Grp2_x
1      1     5       4      4
2      1     3       4      2
3      0     4       7      2
4      2     4       2      1
5      1     3       7      3
6      3     5       4      2
7      4    10       6      3
8      5     5       4      2
9      2     2       5      1
10     7     2       3      4
11     1     3       4      3
12     1     5       4      1
13     2    11       7      6
14     3     8       4      1
15     2     7       5      2
16     2     1       3      1
17     3     3       8      2
18     1     2       4      3
19     1     5       7      2
20     0     4       1      2

要加载 dplyr 包并查找在上述创建的数据框中列名包含 "Grp1_" 的列的每行平均值,请将以下代码添加到上面的代码片段中:

Grp1_x<-rpois(20,2)
Grp1_y<-rpois(20,5)
Grp2_y<-rpois(20,5)
Grp2_x<-rpois(20,2)
df1<-data.frame(Grp1_x,Grp1_y,Grp2_y,Grp2_x)
library(dplyr)
df1%%mutate(Group_1=select(.,starts_with("Grp1_")) %% rowMeans())

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

  Grp1_x Grp1_y Grp2_y Grp2_x Group_1
1      1     5      4      4     3.0
2      1     3      4      2     2.0
3      0     4      7      2     2.0
4      2     4      2      1     3.0
5      1     3      7      3     2.0
6      3     5      4      2     4.0
7      4    10      6      3     7.0
8      5     5      4      2     5.0
9      2     2      5      1     2.0
10     7     2      3      4     4.5
11     1     3      4      3     2.0
12     1     5      4      1     3.0
13     2    11      7      6     6.5
14     3     8      4      1     5.5
15     2     7      5      2     4.5
16     2     1      3      1     1.5
17     3     3      8      2     3.0
18     1     2      4      3     1.5
19     1     5      7      2     3.0
20     0     4      1      2     2.0

示例 2

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

MaleHeight<-sample(150:180,20)
MaleWeight<-sample(50:80,20)
FemaleHeight<-sample(150:180,20)
FemaleWeight<-sample(50:80,20)
df2<-data.frame(MaleHeight,MaleWeight,FemaleHeight,FemaleWeight)
df2

创建了以下数据框

  MaleHeight MaleWeight FemaleHeight FemaleWeight
1       178      61         177           51
2       172      60         169           73
3       174      57         173           53
4       152      62         180           50
5       169      68         168           54
6       177      56         153           68
7       154      69         150           56
8       155      71         175           75
9       160      73         171           60
10      150      50         165           64
11      151      75         156           72
12      168      79         174           78
13      173      64         179           62
14      170      65         178           70
15      161      55         152           65
16      171      67         166           67
17      157      53         158           59
18      153      58         159           55
19      163      72         151           63
20      167      76         170           80

要在上述创建的数据框中查找列名包含 "Male" 的列的每行平均值,请将以下代码添加到上面的代码片段中:

MaleHeight<-sample(150:180,20)
MaleWeight<-sample(50:80,20)
FemaleHeight<-sample(150:180,20)
FemaleWeight<-sample(50:80,20)
df2<-data.frame(MaleHeight,MaleWeight,FemaleHeight,FemaleWeight)
df2%%mutate(Males=select(.,starts_with("Male")) %% rowMeans())

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

   MaleHeight MaleWeight FemaleHeight FemaleWeight Males
1       178         61         177         51 119.5
2       172         60         169         73 116.0
3       174         57         173         53 115.5
4       152         62         180         50 107.0
5       169         68         168         54 118.5
6       177         56         153         68 116.5
7       154         69         150         56 111.5
8       155         71         175         75 113.0
9       160         73         171         60 116.5
10      150         50         165         64 100.0
11      151         75         156         72 113.0
12      168         79         174         78 123.5
13      173         64         179         62 118.5
14      170         65         178         70 117.5
15      161         55         152         65 108.0
16      171         67         166         67 119.0
17      157         53         158         59 105.0
18      153         58         159         55 105.5
19      163         72         151         63 117.5
20      167         76         170         80 121.5

更新于:2021年11月1日

794 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告