我有這個資料框(每列具有相同的值以方便示例)
df = data.frame(x1 = c(1,2,3,4,5),
x2 = c(1,2,3,4,5),
x3 = c(1,2,3,4,5),
x4 = c(1,2,3,4,5),
x5 = c(1,2,3,4,5),
x6 = c(1,2,3,4,5),
x7 = c(1,2,3,4,5),
x8 = c(1,2,3,4,5))
我想將x7和x8放在x2和x3的位置,同時保留x7和x8的名稱并同時洗掉x2和x3(我正在處理的資料框非常大,我不能使用簡單的方法of df[,c(1,7,8,4,5,6)]) 所以我正在尋找一個更容易應用的函式。謝謝
uj5u.com熱心網友回復:
這行得通嗎?
library(dplyr)
df %>%
relocate(c(x7,x8), .after = c(x2, x3)) %>%
select(-c(x2, x3))
#> x1 x7 x8 x4 x5 x6
#> 1 1 1 1 1 1 1
#> 2 2 2 2 2 2 2
#> 3 3 3 3 3 3 3
#> 4 4 4 4 4 4 4
#> 5 5 5 5 5 5 5
uj5u.com熱心網友回復:
您可以嘗試這種靈活的基本 R 方法:
reorder_fun <- function(move_cols, splitpoint, datframe){
a <- 1:grep(splitpoint, names(datframe))
b <- c(a, grep(paste(move_cols, collapse = "|"), names(datframe)))
newdf <- cbind(datframe[, b],
datframe[, setdiff(names(datframe), names(datframe[b]))])
newdf
}
reorder_fun(move_cols = c("x7", "x8"), splitpoint = "x1", datframe = df)
輸出:
# x1 x7 x8 x2 x3 x4 x5 x6
# 1 1 1 1 1 1 1 1 1
# 2 2 2 2 2 2 2 2 2
# 3 3 3 3 3 3 3 3 3
# 4 4 4 4 4 4 4 4 4
# 5 5 5 5 5 5 5 5 5
這允許您將所需的列移動到其他位置(即,在第 3 列之后是:
reorder_fun(move_cols = c("x7", "x8"), splitpoint = "x3", datframe = df)
或者如果您想移動不同的列
reorder_fun(move_cols = c("x5", "x8"), splitpoint = "x1", datframe = df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517073.html
標籤:r数据框多列
上一篇:組合兩個具有相同列名但MultiIndex不同的Dataframe
下一篇:用條件填充資料框中的最后一列
