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