J'ai un cadre de données qui comporte des colonnes a, b et c. J'aimerais ajouter une nouvelle colonne d entre b et c.
Je sais que je pourrais simplement ajouter d à la fin en utilisant cbind mais comment puis-je insérer entre deux colonnes ?
J'ai un cadre de données qui comporte des colonnes a, b et c. J'aimerais ajouter une nouvelle colonne d entre b et c.
Je sais que je pourrais simplement ajouter d à la fin en utilisant cbind mais comment puis-je insérer entre deux colonnes ?
Je vous suggère d'utiliser la fonction add_column()
de la tibble
paquete.
library(tibble)
dataset <- data.frame(a = 1:5, b = 2:6, c=3:7)
add_column(dataset, d = 4:8, .after = 2)
Notez que vous pouvez utiliser les noms de colonne au lieu de l'index de colonne :
add_column(dataset, d = 4:8, .after = "b")
Ou utiliser l'argument .before
au lieu de .after
si c'est plus pratique.
add_column(dataset, d = 4:8, .before = "c")
Vous pouvez réorganiser les colonnes avec [, ou présenter les colonnes dans l'ordre que vous souhaitez.
d <- data.frame(a=1:4, b=5:8, c=9:12)
target <- which(names(d) == 'b')[1]
cbind(d[,1:target,drop=F], data.frame(d=12:15), d[,(target+1):length(d),drop=F])
a b d c
1 1 5 12 9
2 2 6 13 10
3 3 7 14 11
4 4 8 15 12
En supposant que c
suit toujours immédiatement b
ce code ajoutera une colonne après b
peu importe où b
est dans votre data.frame.
> test <- data.frame(a=1,b=1,c=1)
> test
a b c
1 1 1 1
> bspot <- which(names(test)=="b")
> data.frame(test[1:bspot],d=2,test[(bspot+1):ncol(test)])
a b d c
1 1 1 2 1
Ou peut-être plus naturellement :
data.frame(append(test, list(d=2), after=match("b", names(test))))
Créez un exemple de data.frame et ajoutez-y une colonne.
df = data.frame(a = seq(1, 3), b = seq(4,6), c = seq(7,9))
df['d'] <- seq(10,12)
df
a b c d
1 1 4 7 10
2 2 5 8 11
3 3 6 9 12
Réarrangement par index de colonne
df[, colnames(df)[c(1:2,4,3)]]
ou par nom de colonne
df[, c('a', 'b', 'd', 'c')]
Le résultat est
a b d c
1 1 4 10 7
2 2 5 11 8
3 3 6 12 9
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.