如何根据 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