R语言 计算R数据框架中每组的行数
R编程语言中的数据框架可能包含并非所有值都是唯一的列。数据框架中的重复值可以被分割成一个组。可以使用R编程语言中的各种外部包来捕获与相同列的序列相对应的频率。
方法1:使用dplyr包
R语言中的 “dplyr “包被用来进行数据增强和操作。我们可以使用这个方法中的某些函数,它们可以帮助实现我们的功能。
- 使用tally()和group_by()方法
R语言中的group_by()方法可以用来根据单列或多列组将数据归类。所有输入列的似是而非的唯一组合被堆叠在一起作为一个单一的组。
语法
group_by(args ...)
其中,args包含一连串要分组的数据列。
R中的tally()方法被用来总结数据,并计算每个组所属的数值数量。在连续应用这些方法后,数据帧的突变被执行以返回一个表格,其中特定的输入列按照它们在group_by()方法中出现的顺序返回,随后是包含这些组的频率计数的’n’列。
这种方法被认为比其他方法更好,因为它返回关于指定数据框架的列类的详细信息。
例子
library("dplyr")
# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
col2 = letters[1:3])
print ("Original DataFrame")
print (data_frame)
# group by column1 values and count
# the total in each
data_frame %>% group_by(col1) %>%tally()
输出
[1] "Original DataFrame"
col1 col2
1 1 a
2 1 b
3 1 c
4 2 a
5 2 b
6 2 c
7 3 a
8 3 b
9 3 c >
# A tibble: 3 x 2
col1 n
<int> <int>
1 1 3
2 2 3
3 3 3
- 使用dplyr::count()方法
count()方法可以应用于包含一个或多个列的输入数据框,并返回对应于每个组的频率计数。应用此方法返回的列是原始数据框架的列的一个适当的子集。出现在结果中的列是出现在 count() 方法中的列。
语法
count(args …)。
其中,args包含一连串用于分组数据的列。
例子
library("dplyr")
# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
col2 = letters[1:3],
col3 = c(1,4,1,2,2,3,1,2,2))
print ("Original DataFrame")
print (data_frame)
print ("Modified DataFrame")
# count rows by col1 and col3 group
data_frame %>% dplyr::count(col1, col3)
输出
[1] "Original DataFrame"
col1 col2 col3
1 1 a 1
2 1 b 4
3 1 c 1
4 2 a 2
5 2 b 2
6 2 c 3
7 3 a 1
8 3 b 2
9 3 c 2
[1] "Modified DataFrame"
col1 col3 n
1 1 1 2
2 1 4 1
3 2 2 2
4 2 3 1
5 3 1 1
6 3 2 2
方法2:使用data.table包
R中的data.table包可以用来检索和存储有组织的表格结构中的数据。data_table索引的 .N 属性可以用来分类保存遇到的指定列组合的频率计数。列是在 “by “属性中使用R中的list()方法指定的,它是group_by()方法的替代品。
语法
data_table[, .N, by = list(cols.)]
例子
library(data.table)
# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
col2 = letters[1:3],
col3 = c(1,4,1,2,2,3,1,2,2))
print ("Original DataFrame")
print (data_frame)
print ("Modified DataFrame")
data_table <- data.table(data_frame)
data_table[, .N, by = list(col1, col3)]
输出
[1] "Original DataFrame"
col1 col2 col3
1 1 a 1
2 1 b 4
3 1 c 1
4 2 a 2
5 2 b 2
6 2 c 3
7 3 a 1
8 3 b 2
9 3 c 2
[1] "Modified DataFrame"
col1 col3 N
1: 1 1 2
2: 1 4 1
3: 2 2 2
4: 2 3 1
5: 3 1 1
6: 3 2 2
方法3:使用聚合方法
R编程语言中的aggregate()方法是一个通用函数,用于总结和评估时间序列以及数据帧。
语法:
aggreg(formula, data, FUN)
参数:
- formula:如y ~ x,其中y变量是数字数据,要根据分组的x变量分成几组。
- by – 分组元素
- FUN – 要应用的函数
这里要应用的函数是长度,它计算与每个组相关的频率。它计算公式中提到的所有列的合理组合,并显示每个组合的相关频率。因此,它被用来对所有的列进行汇总。
例子
data_frame <- data.frame(col1 = sample(1:2,9,replace = TRUE),
col2 = letters[1:3],
col3 = c(1,4,1,2,2,3,1,2,2))
print ("Original DataFrame")
print (data_frame)
print ("keeping a count of all groups")
data_mod <- aggregate(col3 ~ col1 + col2,
data = data_frame,
FUN = length)
print (data_mod)
输出
[1] "Original DataFrame"
col1 col2 col3
1 2 a 1
2 2 b 4
3 1 c 1
4 1 a 2
5 1 b 2
6 2 c 3
7 2 a 1
8 2 b 2
9 1 c 2
[1] "keeping a count of all groups"
col1 col2 col3
1 1 a 1
2 2 a 2
3 1 b 1
4 2 b 2
5 1 c 2
6 2 c 1