如何计算R中因子中每个级别的值
在本文中,我们将讨论如何在 R 编程语言中计算给定因子中每个级别的值。
方法一:使用summary()方法
基础 R 中的 summary() 方法是一个通用函数,用于生成基于传递的参数的类计算的函数结果的结果摘要。 summary()函数生成 R 中数据框给定因子列的每个级别的值的频率输出。此列中每个变量的汇总统计结果以表格格式作为输出。输出简洁明了,易于理解。
例子:
R
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(letters,50,rep=TRUE))
# count of variables
summary(data_frame$col1)
R
# importing required libraries
library ("plyr")
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
lapply(data_frame, count)
R
# importing required libraries
library(data.table)
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
setDT(data_frame)[, .N, keyby=col1]
R
# importing required libraries
library ("dplyr")
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
data_frame %>%
group_by(col1) %>%
tally()
输出:
a b c d e f g h i j k l n o r s t u v w y z
3 2 1 1 3 3 2 1 2 5 1 3 3 3 1 1 3 3 1 2 5 1
方法 2:使用lapply()方法
R 中的 plyr 包用于模拟数据增强和操作,可以安装到工作空间中。
R 中的 lapply() 方法返回一个与输入向量长度相同的列表,其中每个元素是对相应元素指定的函数的应用结果。此方法将数据框或列表作为输入,并返回列表作为输出。
Syntax:
lapply(vec, FUN)
Parameters :
vec – The atomic factor type vector to apply the function on
FUN – The function to be applied, in this case, which is equivalent to count, to return the frequency of factor levels.
输出返回一个列表,其中第一个组件是因子水平,第二列是该水平的频率。行号附加到每个输出行的开头。
电阻
# importing required libraries
library ("plyr")
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
lapply(data_frame, count)
输出
$col1
x freq
1 a 3
2 b 2
3 c 1
4 d 1
5 e 3
6 f 3
7 g 2
8 h 1
9 i 2
10 j 5
11 k 1
12 l 3
13 n 3
14 o 3
15 r 1
16 s 1
17 t 3
18 u 3
19 v 1
20 w 2
21 y 5
22 z 1
方法 3:使用 data.table 包
R 中的 data.table 包用于处理表以访问、操作和存储数据。
最初,使用 setDT() 命令通过引用将数据帧转换为 data.table。这种方法在处理大型数据集和更多观察时非常有用。
句法:
setDT(df)
keyby 属性应用于所需的列名,以便对其中包含的数据进行分组。作为索引,.N 参数用于代替列来访问每个特定因子级别的实例数。输出是频率表。输出以 data.table 的形式返回,其中 row 以行号开头,后跟冒号。
例子:
电阻
# importing required libraries
library(data.table)
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
setDT(data_frame)[, .N, keyby=col1]
输出
col1 N
1: a 3
2: b 2
3: c 1
4: d 1
5: e 3
6: f 3
7: g 2
8: h 1
9: i 2
10: j 5
11: k 1
12: l 3
13: n 3
14: o 3
15: r 1
16: s 1
17: t 3
18: u 3
19: v 1
20: w 2
21: y 5
22: z 1
方法 4:使用 dplyr 包
“dplyr”包是对 plyr 包的增强,它提供了对数据元素执行的广泛选择和过滤操作。它可以装载并安装到工作空间中。
包中的 group_by() 方法首先用于根据遇到的不同值将数据分组到不同的类别中。属于单个值的行堆叠在一起。 Tally()函数的行为类似于 summarise()函数,用于根据所做的组生成摘要。
句法:
df %>% group_by() %>% tally()
返回的输出采用 tibble 形式,其中包含与输入向量长度相等的行。这些列包含有关遇到的因子水平的频率的信息。此方法可以清楚地了解返回输出的列类型和维度。但是默认只显示十行,可以进一步展开查看其他行。
例子:
电阻
# importing required libraries
library ("dplyr")
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(
letters,50,rep=TRUE))
# counting frequencies of factor
# levels
data_frame %>%
group_by(col1) %>%
tally()
输出
# A tibble: 22 x 2
col1 n
1 a 3
2 b 2
3 c 1
4 d 1
5 e 3
6 f 3
7 g 2
8 h 1
9 i 2
10 j 5
# … with 12 more rows