如果R数据框中某些列是分类变量,如何求列方差?


如果R数据框中某些列是分类变量,要查找列方差,我们可以按照以下步骤操作:

  • 首先,创建一个数据框。

  • 然后,使用plyr包中的numcolwise函数查找某些列为分类变量时的列方差。

示例

创建数据框

让我们创建一个如下所示的数据框:

Group<-sample(c("I","II","III","IV"),25,replace=TRUE)
Num1<-sample(1:50,25)
Num2<-sample(1:50,25)
df1<-data.frame(Group,Num1,Num2)
df1

输出

执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):

   Group Num1 Num2
1  II    11    11
2  III   29    45
3  II     2     5
4  IV     3    13
5  II     9    30
6  IV    40    18
7  III   22    20
8  IV    28    37
9  III   50    42
10 I     10    43
11 II    18    38
12 II    14    31
13 IV     1    19
14 IV    24    35
15 II    15    48
16 IV    36    12
17 IV    19     1
18 I     48    50
19 IV    43     7
20 III   26    15
21 I     35    46
22 III   39    34
23 IV    38    28
24 IV    23     8
25 I     32    47

如果某些列是分类变量,则查找列方差

使用plyr包中的numcolwise函数查找数据框df1中数值列的列方差:

Group<-sample(c("I","II","III","IV"),25,replace=TRUE)
Num1<-sample(1:50,25)
Num2<-sample(1:50,25)
df1<-data.frame(Group,Num1,Num2)
library(plyr)
numcolwise(var)(df1)

输出

     Num1    Num2
1 206.0833 242.8933

示例2

创建数据框

让我们创建一个如下所示的数据框:

Categories<-sample(c("First","Second","Third"),25,replace=TRUE)
Score<-sample(1:10,25,replace=TRUE)
Price<-sample(1:5,25,replace=TRUE)
df2<-data.frame(Categories,Score,Price)
df2

输出

执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):

   Categories Score Price
1  First       1     3
2  Third       5     3
3  Second      6     1
4  First       3     3
5  First       2     2
6  Second      2     4
7  Third       6     5
8  Third       7     4
9  Third       6     4
10 Second      7     4
11 First       7     4
12 Second      6     2
13 First       9     3
14 Second      8     5
15 Third       6     4
16 Third       2     5
17 First      10     1
18 First       1     5
19 Second      7     4
20 First       1     2
21 Third      10     3
22 Third      10     5
23 Second      8     3
24 Second     10     2
25 Second      9     1

如果某些列是分类变量,则查找列方差

使用plyr包中的numcolwise函数查找数据框df2中数值列的列方差:

Categories<-sample(c("First","Second","Third"),25,replace=TRUE)
Score<-sample(1:10,25,replace=TRUE)
Price<-sample(1:5,25,replace=TRUE)
df2<-data.frame(Categories,Score,Price)
library(plyr)
numcolwise(var)(df2)

输出

    Score   Price
1 9.456667 1.71

更新于:2021年11月8日

414 次查看

开启您的职业生涯

完成课程获得认证

开始学习
广告