如果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
广告