R语言 计算R数据框架中每组的行数

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程