如果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次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告