如果R数据框中某些列是分类列,如何查找每列值的自然对数?
如果R数据框中某些列是分类列,要查找每个值的自然对数,我们可以按照以下步骤操作:
首先,创建一个数据框。
然后,使用plyr包中的numcolwise函数,如果某些列是分类列,则查找自然对数。
示例
创建数据框
让我们创建一个如下所示的数据框:
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 low first 32 83 2 medium first 21 97 3 medium first 30 46 4 medium first 25 99 5 medium second 10 63 6 low second 11 2 7 medium first 17 98 8 low first 8 81 9 high second 23 23 10 high first 16 68 11 high second 33 60 12 medium second 9 52 13 medium second 6 56 14 medium first 45 40 15 low second 31 14 16 low first 26 72 17 high second 18 77 18 medium first 43 85 19 medium first 34 73 20 medium second 12 64 21 low second 39 29 22 medium first 36 37 23 low second 15 33 24 medium second 14 57 25 low second 37 35
如果某些列是分类列,则查找自然对数
使用plyr包中的numcolwise函数来查找数据框df中数值列中每个值的自然对数:
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(log)(df)
输出
Score Demand 1 3.465736 4.4188406 2 3.044522 4.5747110 3 3.401197 3.8286414 4 3.218876 4.5951199 5 2.302585 4.1431347 6 2.397895 0.6931472 7 2.833213 4.5849675 8 2.079442 4.3944492 9 3.135494 3.1354942 10 2.772589 4.2195077 11 3.496508 4.0943446 12 2.197225 3.9512437 13 1.791759 4.0253517 14 3.806662 3.6888795 15 3.433987 2.6390573 16 3.258097 4.2766661 17 2.890372 4.3438054 18 3.761200 4.4426513 19 3.526361 4.2904594 20 2.484907 4.1588831 21 3.663562 3.3672958 22 3.583519 3.6109179 23 2.708050 3.4965076 24 2.639057 4.0430513 25 3.610918 3.5553481
广告