在这篇文章中,我们将一起探讨如何在 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
输出:
方法 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
输出:
方法 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
输出:
上面的图片显示了 department 列已经成功移到了第一位。
方法 6:将列移至最后一位
我们也可以使用 everything() 方法将特定列移至最后一位。
> 语法: dataframe %>% select(-column_name, everything())
>
> 或者更直观地:
> dataframe %>% select(everything(), column_name)
这里我们演示将 id 列移至最后。
R
print("初始数据框")
# 显示初始数据框
print(data)
print("重新排列后的数据框")
# 将 id 列移至最后一位
data %>% select(everything(), id)
**输出:**

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