📜  在 R 中使用 Dplyr 包创建排名变量

📅  最后修改于: 2022-05-13 01:55:52.033000             🧑  作者: Mango

在 R 中使用 Dplyr 包创建排名变量

在本文中,我们将讨论如何使用 R 中的 Dplyr 包创建排名变量。

安装

要安装此软件包,请在终端中键入以下命令。

install.packages("dplyr") 

mutate 方法可用于通过执行各种聚合和统计方法并将其分配给数据框的新列名来将数据重新排列到不同的方向。

句法:

mutate(new-col-name = function(col-name))

desc() 方法可用于按降序排列数据。它是 R 中可用的内置聚合方法。但是,与列前的 - 符号一起,用于按升序分配排名变量。

句法:

desc(col-name)

可以应用 dense_rank 方法来返回窗口分区内的行的排名,没有任何间隙。它将数据框的列名作为参数。具有相同值的变量被分配相同的等级,而不管它在数据框的列中出现的次数。

示例 1:

R
library(data.table)
library(dplyr)
  
# creating first data frame
data_frame < - data.table(col1=rep(c(5: 7), each=2),
                          col2=c(1, 4, 3, 4, 1, 6),
                          col3=1
                          )
print("Original DataFrame")
print(data_frame)
  
# ranking variable in data frame
print("Modified DataFrame")
  
# ranking by column 2
data_frame % > % mutate(rank=dense_rank(desc(-col2)))


R
library(data.table)
library(dplyr)
  
# creating first data frame
data_frame < - data.table(col1=rep(c(5: 7), each=2),
                          col2=c(1, 4, 3, 4, 1, 6),
                          col3=1
                          )
  
print("Original DataFrame")
print(data_frame)
  
# ranking variable in data frame
print("Modified DataFrame")
data_frame % > % mutate(rank=dense_rank(desc(col2)))


输出

[1] "Original DataFrame" 
 col1 col2 col3 
1:    5    1    1 
2:    5    4    1 
3:    6    3    1 
4:    6    4    1 
5:    7    1    1 
6:    7    6    1 
[1] "Modified DataFrame" 
col1 col2 col3 rank 
1:    5    1    1    1 
2:    5    4    1    3 
3:    6    3    1    2 
4:    6    4    1    3 
5:    7    1    1    1 
6:    7    6    1    4

示例 2:按降序分配排名

列名变量 rank 也可以不带减号排列在数据框中,按降序分配排名。

R

library(data.table)
library(dplyr)
  
# creating first data frame
data_frame < - data.table(col1=rep(c(5: 7), each=2),
                          col2=c(1, 4, 3, 4, 1, 6),
                          col3=1
                          )
  
print("Original DataFrame")
print(data_frame)
  
# ranking variable in data frame
print("Modified DataFrame")
data_frame % > % mutate(rank=dense_rank(desc(col2)))

输出

[1] "Original DataFrame"
col1 col2 col3 
1:    5    1    1 
2:    5    4    1 
3:    6    3    1 
4:    6    4    1 
5:    7    1    1 
6:    7    6    1 
[1] "Modified DataFrame" 
col1 col2 col3 rank 
1:    5    1    1    4 
2:    5    4    1    2 
3:    6    3    1    3 
4:    6    4    1    2 
5:    7    1    1    4 
6:    7    6    1    1