R语言 如何选择每组中具有最大值的行

R语言 如何选择每组中具有最大值的行

在R语言中,为了从一个数据框中选择每组中具有最大值的行,我们可以使用下面讨论的各种方法。

考虑以下数据集,在子列中有多个观察值。这个数据集包含三列,分别是 sr_no,submarks

创建数据集。

在这里,我们要创建数据框架来进行演示。

代码块

输出

   roll sub marks
1      1   A     2
2      2   A     3
3      3   B     5
4      4   B     2
5      5   B     5
6      6   C     8
7      7   C    17
8      8   A     3
9      9   C     5
10    10   C     5

这里,卷子和分数是整数值,子是分类值(char),有A、B、C三个类别。

我们可以看到 科目 A、B、C的最大值(分数)分别为 35、17 。我们可以用以下两种方法选择组中的最大行。

方法1:使用R基础。

第1步: 将数据集加载到一个变量(组)。

# Creating a dataset.
no <- c( 1 : 10)
subject <- c('A', 'A', 'B', 'B', 'B',
             'C', 'C', 'A', 'C', 'C')
  
mark <- c(2, 3, 5, 2, 5, 8, 17, 3, 5, 5)
group <- data.frame(roll = no, sub = subject, 
                    marks = mark )
  
group

输出

   roll sub marks
1      1   A     2
2      2   A     3
3      3   B     5
4      4   B     2
5      5   B     5
6      6   C     8
7      7   C    17
8      8   A     3
9      9   C     5
10    10   C     5

第2步: 将每组的分数按降序排列(A、B、C)。

# Creating a dataset.
no <- c( 1 : 10)
subject <- c('A', 'A', 'B', 'B', 'B',
             'C', 'C', 'A', 'C', 'C')
mark <- c(2, 3, 5, 2, 5, 8, 17, 3, 5, 5)
group <- data.frame(roll = no, sub = subject, 
                    marks = mark )
  
# sorting the sub and marks.
sorted_group <- group[order(groupsub, -groupmarks),]
  
sorted_group

输出

   roll sub marks
2      2   A     3
8      8   A     3
1      1   A     2
3      3   B     5
5      5   B     5
4      4   B     2
7      7   C    17
6      6   C     8
9      9   C     5
10    10   C     5

由于我们的 现在是以升序排列的,我们准备选择每组中数值最大的行,这里的组是A、B、C。

第3步: 从排序的主题列中删除重复的行。

# Creating a dataset.
no <- c( 1 : 10)
subject <- c('A', 'A', 'B', 'B', 'B',
             'C', 'C', 'A', 'C', 'C')
mark <- c(2, 3, 5, 2, 5, 8, 17, 3, 5, 5)
  
group <- data.frame(roll = no, sub = subject, 
                    marks = mark )
  
# sorting the sub and marks.
sorted_group <- group[order(groupsub, -groupmarks),]
  
# removing duplicates from the sorted sub column
ans <- sorted_group[!duplicated(sorted_group$sub),]
  
ans

输出

如何在R语言中选择每组中具有最大值的行?

这些是在每组中选择的具有最大数值的行。

方法2:使用dplyr包

dplyr 是一个最常用 处理数据框架的R包。 dplyr 为数据处理提供了各种动词(函数),如过滤、排列、选择、重命名、突变等。

为了安装 dplyr 包,我们必须在R控制台运行以下命令。

install.packages("dplyr")

第1步: 加载数据集和库。

# Creating a dataset.
no <- c( 1 : 10)
subject <- c('A', 'A', 'B', 'B', 'B',
             'C', 'C', 'A', 'C', 'C')
mark <- c(2, 3, 5, 2, 5, 8, 17, 3, 5, 5)
  
group <- data.frame(roll = no, sub = subject, 
                    marks = mark )
  
# loading library
library("dplyr")

第2步: 现在使用 group_by 动词(函数)对数据 框子 进行分组,并使用 which.max() 选择具有最大分数的行 。

# Creating a dataset.
no <- c( 1 : 10)
subject <- c('A', 'A', 'B', 'B', 'B',
             'C', 'C', 'A', 'C', 'C')
mark <- c(2, 3, 5, 2, 5,
          8, 17, 3, 5, 5)
  
group <- data.frame(roll = no, sub = subject, 
                    marks = mark )
  
# loading library
library("dplyr")
  
group %>% group_by(sub) %>% slice(which.max(marks))

输出

如何在R语言中选择每组中具有最大值的行?

我们可以看到,这些是在每组中具有最大价值的选定行。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程