Вот простая, но гибкая функция, которую я написал для перемещения столбца в любом месте фрейма данных.
move.col <- function(df, move_this, next_to_this, before = FALSE) {
if (before==FALSE)
df[,c(match(setdiff(names(df)[1:which(names(df)==next_to_this)],move_this),names(df)),
match(move_this,names(df)),
match(setdiff(names(df)[which(names(df)==next_to_this):ncol(df)],c(next_to_this,move_this)),names(df)))]
else
df[,c(match(setdiff(names(df)[1:(which(names(df)==next_to_this))],c(next_to_this,move_this)),names(df)),
match(move_this,names(df)),
match(setdiff(names(df)[(which(names(df)==next_to_this)):ncol(df)],move_this),names(df)))]
}
Использование: Укажите фрейм данных (df
), имя столбца, который вы хотите переместить (move_this
), и имя столбца, который вы хотите переместитьрядом (next_to_this
).По умолчанию функция будет перемещать столбец move_this
после столбца next_to_this
.Вы можете указать before = TRUE
для перемещения move_this
до next_to_this
.
Примеры:
- Переместить «b» после «g» (т. Е.сделать последний столбец "b").
move.col(df, "b", "g")
Переместите «c» после «e».
move.col(df, "c", "e")
Переместите «g» перед «a» (т. Е. Сделайте «g» первым столбцом).
move.col(df, "g", "a", before=TRUE)
Переместите «d» и «f» перед «b» (т. Е. Переместите несколько столбцов).
move.col(df,c("d","f"),"b", before=TRUE)