如何根据 R 中因子列的值找到频率总数?

r programmingserver side programmingprogramming更新于 2025/4/16 4:52:17

通常,因子列中有重复值,这意味着因子列有许多级别,并且每个级别都出现多次。在这种情况下,如果我们有一个频率列,那么我们想根据因子列的值找到该频率总数,这可以通过使用聚合函数来完成。

示例

考虑下面的数据框 −

> set.seed(109)
> Class<-rep(sample(LETTERS[1:5],4),times=5)
> Frequency<-sample(1:10,20,replace=TRUE)
> df1<-data.frame(Class,Frequency)
> df1

输出

    Class Frequency
1     E       9
2     D       5
3     B       10
4     C       10
5     E       7
6     D       10
7     B       9
8     C       5
9     E       8
10    D       7
11    B       1
12    C       3
13    E       5
14    D       10
15    B       2
16    C       3
17    E       9
18    D       3
19    B       2
20    C       9

查找每个类别的频率总和−

>aggregate(df1["Frequency"],by=df1["Class"],sum)

输出

   Class Frequency
1   B   24
2   C   30
3   D   35
4   E   38

让我们看另一个例子 −

示例

> Metal<-rep(c("Iron","Nickel","Lead","Zinc","Tin","Sodium","Silver"),times=5)
> Quantity<-sample(20:50,35,replace=TRUE)
> df2<-data.frame(Metal,Quantity)
> head(df2,10)
   Metal    Quantity
1    Iron    43
2    Nickel  33
3    Lead    25
4    Zinc    24
5    Tin    27
6    Sodium  34
7    Silver   31
8    Iron    37
9    Nickel   36
10    Lead    24
> tail(df2,10)
      Metal Quantity
26    Tin    49
27    Sodium 43
28    Silver 47
29    Iron    28
30    Nickel 41
31    Lead    21
32    Zinc    33
33    Tin    44
34    Sodium 34
35    Silver 33
> aggregate(df2["Quantity"],by=df2["Metal"],sum)

输出

   Metal    Quantity
1    Iron     157
2    Lead     148
3    Nickel   174
4    Silver   165
5    Sodium   161
6    Tin      192
7    Zinc     155

相关文章