如果R資料框中某些列是分類變數,如何找到每列數值型資料的最大值的位置?


如果R資料框中某些列是分類變數,要查詢每列數值型資料的最大值的位置,可以按照以下步驟操作:

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

  • 然後,使用plyr包中的numcolwise函式來查詢每個數值型列的最大值(即使某些列是分類變數)。

示例1

建立資料框

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

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
DV1<-rpois(25,5)
DV2<-rpois(25,10)
df1<-data.frame(Level,Group,DV1,DV2)
df1

輸出

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出可能因系統而異):

   Level  Group  DV1 DV2
1  low    first  8    7
2  low    first  6   11
3  high   first  2   14
4  medium second 3   11
5  low    second 4   10
6  medium second 7    7
7  high   second 4   15
8  low    second 3    8
9  high   second 5    6
10 medium second 3   13
11 medium second 1   13
12 low    first  3   10
13 high   first  6   10
14 high   first  5   14
15 medium first 10   11
16 low    first  6   7
17 medium second 7   10
18 high   second 5   11
19 medium second 4   11
20 low    first  5   13
21 medium first  2    9
22 medium first  6   12
23 low    second 5    8
24 low    second 6   10
25 low    second 2    6

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

使用plyr包中的numcolwise函式,在資料框df1中查詢每列數值型資料的最大值(即使某些列是分類變數):

Level<-sample(c("low","medium","high"),25,replace=TRUE)
Group<-sample(c("first","second"),25,replace=TRUE)
DV1<-rpois(25,5)
DV2<-rpois(25,10)
df1<-data.frame(Level,Group,DV1,DV2)
library(plyr)
numcolwise(which.max)(df1)

輸出

  DV1 DV2
1 24  15

示例2

建立資料框

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

factor1<-sample(c("Super","Lower","Medium"),25,replace=TRUE)
factor2<-sample(c("I","II","III"),25,replace=TRUE)
v1<-rnorm(25)
v2<-rnorm(25)
df2<-data.frame(factor1,factor2,v1,v2)
df2

輸出

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出可能因系統而異):

   factor1  factor2   v1           v2
1  Lower      II   -0.88708231   0.30097842
2  Super      I    -1.15358512  -0.50595244
3  Lower      II   -0.07962128  -0.74934137
4  Super      I    -1.48634012   0.19566058
5  Lower     III    1.14577383  -1.09185066
6  Super     II     0.88951251  -0.02418110
7  Lower     III    0.13711621  -1.02686656
8  Super      I     0.27011965   1.26320650
9  Medium    III    0.16775174  -1.92041942
10 Medium    III   -0.15766279   1.26627694
11 Medium     I   -1.23267080   -0.93831033
12 Medium    II    0.38065869   2.09701663
13 Medium     I   -1.45391083  -0.08486117
14 Lower     III   0.80940837  -1.06338634
15 Medium     II   0.20411080  -0.29534513
16 Lower     III   0.59453629   2.64966638
17 Medium     III  0.31227512   1.68916757
18 Lower      I    2.89731076   0.96783335
19 Super     III  -0.06000641   0.58903660
20 Lower     III   0.92520811  -1.03121594
21 Medium    III   1.85323653  -1.33632487
22 Medium     II   1.13713484  -1.27496569
23 Super      I    0.52744948   0.28164512
24 Lower      I    0.17266053   0.57324301
25 Lower     II    2.67321967  -1.80427360

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

使用plyr包中的numcolwise函式,在資料框df2中查詢每列數值型資料的最大值(即使某些列是分類變數):

factor1<-sample(c("Super","Lower","Medium"),25,replace=TRUE)
factor2<-sample(c("I","II","III"),25,replace=TRUE)
v1<-rnorm(25)
v2<-rnorm(25)
df2<-data.frame(factor1,factor2,v1,v2)
library(plyr)
numcolwise(which.max)(df2)

輸出

  v1 v2
1 18 16

更新於:2021年11月8日

76次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告