在 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