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

更新于: 2021年11月9日

180 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告