如果R資料框中某些列是分類變數,如何求列的均值?


如果R資料框中某些列是分類變數,要查詢列的均值,我們可以按照以下步驟操作:

  • 首先,建立一個數據框。

  • 然後,使用plyr包中的numcolwise函式來查詢數值列的均值,即使某些列是分類變數。

示例1

建立資料框

讓我們建立一個如下所示的資料框:

Grp<-sample(c("Male","Female"),25,replace=TRUE)
Score<-sample(1:50,25)
Frequency<-sample(1:5,25,replace=TRUE)
df1<-data.frame(Grp,Score,Frequency)
df1

輸出

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出在您的系統上會有所不同):

   Grp    Score Frequency
1  Male    22     2
2  Male    10     2
3  Female  38     4
4  Female  13     2
5  Male    24     5
6  Male    39     2
7  Male    23     5
8  Female  42     3
9  Female  15     4
10 Female  49     4
11 Male    18     2
12 Female  30     5
13 Male    17     2
14 Male     4     3
15 Male    34     2
16 Female   3     5
17 Male    35     2
18 Female  31     3
19 Female  43     5
20 Female   9     4
21 Female  12     4
22 Female   8     4
23 Male    29     2
24 Male    46     3
25 Male    33     2

如果某些列是分類變數,則查詢列的均值

使用plyr包中的numcolwise函式查詢資料框df1中數值列的均值:

Grp<-sample(c("Male","Female"),25,replace=TRUE)
Score<-sample(1:50,25)
Frequency-<sample(1:5,25,replace=TRUE)
df1<-data.frame(Grp,Score,Frequency)
library(plyr)
numcolwise(mean)(df1)

輸出

   Score Frequency
1 25.08  3.24

示例2

建立資料框

讓我們建立一個如下所示的資料框:

factor<-sample(LETTERS[1:4],25,replace=TRUE)
v1<-rpois(25,2)
v2<-rpois(25,5)
df2<-data.frame(factor,v1,v2)
df2

輸出

執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出在您的系統上會有所不同):

   factor v1 v2
1  C      3  7
2  C      2  5
3  C      2  5
4  A      3  7
5  C      4  8
6  B      0  6
7  C      3  6
8  D      3  4
9  D      2  4
10 A      6  10
11 A      2  4
12 A      2  5
13 B      3  6
14 C      2  7
15 A      2  4
16 C      0  6
17 C      3  7
18 B      1  7
19 C      1  6
20 B      2  3
21 A      1  8
22 C      1  1
23 A      3  7
24 A      4  7
25 B      1  7

如果某些列是分類變數,則查詢列的均值

使用plyr包中的numcolwise函式查詢資料框df2中數值列的均值:

factor<-sample(LETTERS[1:4],25,replace=TRUE)
v1<-rpois(25,2)
v2<-rpois(25,5)
df2<-data.frame(factor,v1,v2)
library(plyr)
numcolwise(mean)(df2)

輸出

    v1  v2
1 2.24 5.88

更新於:2021年11月8日

瀏覽量:104

啟動您的職業生涯

完成課程獲得認證

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