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


如果 R 資料框中某些列是分類列,要找到每個數值列的最小值的位置,我們可以按照以下步驟操作:

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

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

示例 1

建立資料框

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

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

輸出

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

    factor1 factor2    v1           v2
1  Medium     III  -2.14379228  -0.75943453
2  Super       I   -1.47939801   1.59666611
3  Lower      III   1.23368296  -1.38936623
4  Lower      III   0.20952920  -0.04218399
5  Medium     III   0.05884382  -0.84164117
6  Super       II   1.96347308   0.88664585
7  Lower       II   0.31493547  -1.27612944
8  Super      III  -1.51226987   1.29224755
9  Medium     III   1.52328734   1.32171715
10 Medium       I  -0.16912317   0.46726813
11 Medium       I   0.24834413  -0.70308350
12 Super        I  -1.16519280  -0.04263700
13 Medium     III   0.17775948  -1.24434106
14 Super       II   0.60504839  -0.50105846
15 Medium      II  -1.65936651  -1.57653244
16 Medium     III   0.96991787  -0.62284764
17 Medium      I    0.67194953   0.72451047
18 Lower      III   0.73096741  -0.93229961
19 Super      III  -0.75207261  -1.34829579
20 Lower        I  -0.19563701   0.06724962
21 Lower        I   0.15769044   1.08397200
22 Lower      III  -1.01078566   0.34309269
23 Medium       I  -0.16170496   0.29763892
24 Lower      III   2.54521045   0.14029670
25 Lower        I   0.96949903  -0.43465951

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

使用 plyr 包中的 numcolwise 函式,如果資料框 df1 中某些列是分類列,則查詢每個數值列的最小值:

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

輸出

  v1 v2
1 1  15

示例 2

建立資料框

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

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)
df2<-data.frame(Level,Group,DV1,DV2)
df2

輸出

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

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

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

使用 plyr 包中的 numcolwise 函式,如果資料框 df2 中某些列是分類列,則查詢每個數值列的最小值:

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)
df2<-data.frame(Level,Group,DV1,DV2)
library(plyr)
numcolwise(which.min)(df2)

輸出

  DV1 DV2
1 19  21

更新於:2021-11-09

67 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告