使用 R 中的 Dplyr 包重新排列数据框列的顺序

在这篇文章中,我们将一起探讨如何在 R 语言中使用 dplyr 包来重新排列或调整数据框中列的顺序。

创建演示用的数据框:

R

# 加载包
library(dplyr)

# 创建一个包含三列的数据框
# id、department 和 salary,共8行数据
data = data.frame(id = c(7058, 7059, 7060, 7089,
                         7072, 7078, 7093, 7034),
                  
                  department = c(‘IT‘,‘sales‘,‘finance‘,
                                 ‘IT‘,‘finance‘,‘sales‘,
                                 ‘HR‘,‘HR‘),
                  
                  salary = c(34500.00, 560890.78, 67000.78, 
                             25000.00, 78900.00, 25000.00,
                             45000.00, 90000))

# 显示数据框
data

INLINECODEdce38d90select()INLINECODE476682fbselect(dataframe, columns)INLINECODE07b30862dataframeINLINECODE42fb371ccolumnsINLINECODE0bd4dcae(id, department, salary)INLINECODE370beca9(salary, id, department)

R

CODEBLOCK_e54af0d4

输出:

!image

方法 2:根据列的位置重新排列数据框的列。

在这里,我们将使用列的索引/位置来重新排列列。为了实现这一点,我们将再次使用 select 方法。

注意: 列的索引/位置是从 1 开始计数的。

> 语法select(dataframe, index_positions)

>

>

> 参数说明:

>

>

> – dataframe:输入的数据框

> – index_positions:需要重新排列的列位置

在这里,我们将把列移动到不同的位置。

R

# 显示初始数据框
print("初始数据框")
print(data)

print("根据位置重新排序列")

# 使用 select 根据列位置重新排列列
print(select(data, 3, 1, 2))

INLINECODEf757b5eborder()INLINECODE489fa615select()INLINECODEab1ccabbcolnamesINLINECODEa155782adataframe %>% select(order(colnames(dataframe)))INLINECODEc68d9d6bdataframeINLINECODEf968124c%>%INLINECODE0161f533order()INLINECODEf1562b4dcolnames():用于获取数据框中的列名

在这里,我们将基于列名的字母顺序来重新排列数据。

R

CODEBLOCK_449437fd

输出:

!image

方法 4:按字母逆序重新排列列名

我们将通过 colnames 函数以逆序的方式对列进行排序。

> 语法: dataframe %>% select(order(colnames(dataframe), decreasing = TRUE))

>

>

> 参数说明:

>

>

> – dataframe:输入的数据框

> – %>%:管道操作符,用于将结果传递给数据框

> – order():用于按字母顺序重新排列数据框的列

> – colnames():用于获取数据框中的列名

> – decreasing = TRUE:该参数指定以降序(逆序)方式对数据框进行排序

在这里,我们将基于列名的字母逆序来重新排列数据。

R

print("初始数据框")

# 显示初始数据框
print(data)

print("重新排列后的数据框")

# 按字母逆序重新排列列
data %>% select(order(colnames(data),
                      decreasing = TRUE))

INLINECODE8a36600aeverything()INLINECODE0c59032cdataframe %>% select(columnname, everything())INLINECODEb7cb009edataframeINLINECODE9bd4ead5columnnameINLINECODE8e717a65departmentINLINECODEb85c86e6

输出:

!image

上面的图片显示了 department 列已经成功移到了第一位。

方法 6:将列移至最后一位

我们也可以使用 everything() 方法将特定列移至最后一位。

> 语法: dataframe %>% select(-column_name, everything())

>

> 或者更直观地:

> dataframe %>% select(everything(), column_name)

这里我们演示将 id 列移至最后。

R

print("初始数据框")

# 显示初始数据框
print(data)

print("重新排列后的数据框")

# 将 id 列移至最后一位
data %>% select(everything(), id)

**输出:**

![image](https://media.geeksforgeeks.org/wp-content/uploads/20210720172225/Capture6-300x84.png)

我们可以看到,id` 列现在位于数据框的最后一列。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/53008.html
点赞
0.00 平均评分 (0% 分数) - 0