J'aimerais que la dernière colonne du bloc de données soit déplacée au début (en tant que première colonne). Comment puis-je le faire dans R?
Mon data.frame a environ un millier de colonnes pour changer l'ordre. Je veux juste choisir une colonne et "la déplacer au début".
Je ne sais pas si cela vaut la peine d'ajouter ceci comme réponse ou si un commentaire conviendrait, mais j'ai écrit une fonction appelée moveme
qui vous permet de faire ce que vous voulez faire avec le langage que vous décrivez. Vous pouvez trouver la fonction à cette réponse: https://stackoverflow.com/a/18540144/1270695
Cela fonctionne sur le names
de votre data.frame
et génère un vecteur de caractères que vous pouvez utiliser pour réorganiser vos colonnes:
mydf <- data.frame(matrix(1:12, ncol = 4))
mydf
moveme(names(mydf), "X4 first")
# [1] "X4" "X1" "X2" "X3"
moveme(names(mydf), "X4 first; X1 last")
# [1] "X4" "X2" "X3" "X1"
mydf[moveme(names(mydf), "X4 first")]
# X4 X1 X2 X3
# 1 10 1 4 7
# 2 11 2 5 8
# 3 12 3 6 9
Si vous mélangez des choses comme ça, je vous suggère de convertir votre data.frame
à un data.table
et en utilisant setcolorder
(avec ma fonction moveme
, si vous le souhaitez) pour effectuer le changement par référence.
Dans votre question, vous avez également mentionné "Je veux juste choisir une colonne et la déplacer au début". S'il s'agit d'une colonne arbitraire, et pas spécifiquement de la dernière, vous pouvez également envisager d'utiliser setdiff
.
Imaginez que vous travaillez avec le jeu de données "mtcars" et que vous souhaitez déplacer la colonne "am" au début.
x <- "am"
mtcars[c(x, setdiff(names(mtcars), x))]
Déplacer la dernière colonne au début:
new_df <- df %>%
select(last_column_name, everything())
Ceci est également valable pour toutes les colonnes et toutes les quantités:
new_df <- df %>%
select(col_5, col_8, everything())
Exemple utilisant le cadre de données mtcars
:
head(mtcars, n = 2)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Last column is 'carb'
new_df <- mtcars %>% select(carb, everything())
head(new_df, n = 2)
# carb mpg cyl disp hp drat wt qsec vs am gear
# Mazda RX4 4 21.0 6 160 110 3.90 2.620 16.46 0 1 4
# Mazda RX4 Wag 4 21.0 6 160 110 3.90 2.875 17.02 0 1 4
Vous pouvez changer l'ordre des colonnes en les adressant dans le nouvel ordre en les triant explicitement avec data[,c(ORDER YOU WANT THEM TO BE IN)]
Si vous voulez juste que la dernière colonne soit la première, utilisez: data[,c(ncol(data),1:(ncol(data)-1))]
> head(cars)
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
> head(cars[,c(2,1)])
dist speed
1 2 4
2 10 4
3 4 7
4 22 7
5 16 8
6 10 9
dataframe<-dataframe[,c(1000, 1:999)]
cela déplacera votre dernière colonne, à savoir la 1000ème colonne, dans la première colonne.
Si vous souhaitez déplacer une colonne nommée vers la première position, utilisez simplement:
df[,c(which(colnames(df)=="desired_colname"),which(colnames(df)!="desired_colname"))]