在 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 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.