如果 R 数据框中的某些列属于分类,如何找到列中每个值的 log2?
r programmingserver side programmingprogramming更新于 2025/4/7 9:22:17
如果 R 数据框中的某些列属于分类,要找到每个值的 log2,我们可以按照以下步骤 −
首先,创建一个数据框。
然后,使用 plyr 包中的 numcolwise 函数找到 log2,如果某些列属于分类。
示例
创建数据框
让我们创建一个数据框,如下所示 −
Level<-sample(c("low","medium","high"),25,replace=TRUE) Group<-sample(c("first","second"),25,replace=TRUE) Score<-sample(1:50,25) Demand<-sample(1:100,25) df<-data.frame(Level,Group,Score,Demand) df
输出
执行时,上述脚本将生成以下输出(由于随机化,此输出将因您的系统而异) −
Level Group Score Demand 1 high first 38 86 2 medium second 44 100 3 medium first 33 68 4 high first 25 24 5 low first 34 62 6 low first 43 55 7 low first 35 42 8 high second 21 92 9 low second 27 78 10 medium first 36 66 11 low first 2 22 12 high first 42 40 13 high second 40 46 14 low first 28 70 15 medium first 23 53 16 medium first 49 58 17 low first 6 31 18 low first 18 79 19 medium second 50 10 20 low first 31 27 21 high second 10 43 22 low second 4 23 23 medium second 20 87 24 high first 12 69 25 high second 15 9
如果某些列是分类的,则查找 log2
使用 plyr 包中的 numcolwise 函数查找数据框 df 中数值列中每个值的 log2 −
Level<-sample(c("low","medium","high"),25,replace=TRUE) Group<-sample(c("first","second"),25,replace=TRUE) Score<-sample(1:50,25) Demand<-sample(1:100,25) df<-data.frame(Level,Group,Score,Demand) library(plyr) numcolwise(log2)(df)
输出
Score Demand 1 5.247928 6.426265 2 5.459432 6.643856 3 5.044394 6.087463 4 4.643856 4.584963 5 5.087463 5.954196 6 5.426265 5.781360 7 5.129283 5.392317 8 4.392317 6.523562 9 4.754888 6.285402 10 5.169925 6.044394 11 1.000000 4.459432 12 5.392317 5.321928 13 5.321928 5.523562 14 4.807355 6.129283 15 4.523562 5.727920 16 5.614710 5.857981 17 2.584963 4.954196 18 4.169925 6.303781 19 5.643856 3.321928 20 4.954196 4.754888 21 3.321928 5.426265 22 2.000000 4.523562 23 4.321928 6.442943 24 3.584963 6.108524 25 3.906891 3.169925