如何在R中根據因子列的值查詢頻率總和?


通常,我們在因子列中具有重複值,這意味著一個因子列具有多個水平,並且這些水平中的每一個都出現很多次。在這種情況下,如果我們有一個頻率列,那麼我們希望根據因子列的值查詢該頻率的總和,這可以透過使用聚合函式來完成。

示例

 現場演示

考慮以下資料框 -

> 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

更新於: 2020年9月4日

380 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.