R语言 如何计算一个因子中每一级的值
在这篇文章中,我们将讨论如何在R编程语言中计算一个给定因素中每一级的值。
方法1:使用 summary() 方法
基础R语言中的summary()方法是一个通用函数,用于产生基于所传参数类别计算的函数结果摘要。summary()函数产生一个R中数据框架中给定因素列的每一级数值的频率输出,该列的每个变量的汇总统计结果以表格形式输出。该输出简洁明了,易于理解。
例子 。
set.seed(1)
# creating data
data_frame <- data.frame(col1 = sample(letters,50,rep=TRUE))
# count of variables
summary(data_frame$col1)
输出 。
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()方法返回一个与输入向量相同长度的列表,其中每个元素都是指定的函数应用于相应元素的结果。该方法将数据帧或列表作为输入,并将列表作为输出返回。
语法。
lapply(vec, FUN)
参数:
vec – 要应用函数的原子因子类型向量
FUN – 要应用的函数,在本例中,相当于count,用于返回因子水平的频率。
输出返回一个列表,其中第一部分是因子水平,第二列是该水平的频率。每个输出行的开头都附加了一个行号。
# 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的形式返回,其中行以行号开始,后面是冒号。
例子 。
# 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()函数的作用与summaryise()函数类似,用于根据所做的分组生成摘要。
语法 。
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
<fct> <int>
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