J'aimerais convertir les valeurs d'une colonne d'un cadre de données existant en noms de lignes. Il est possible de le faire sans exporter le cadre de données puis le réimporter avec un fichier row.names =
appel?
Par exemple, j'aimerais convertir:
> samp
names Var.1 Var.2 Var.3
1 A 1 5 0
2 B 2 4 1
3 C 3 3 2
4 D 4 2 3
5 E 5 1 4
dans:
> samp.with.rownames
Var.1 Var.2 Var.3
A 1 5 0
B 2 4 1
C 3 3 2
D 4 2 3
E 5 1 4
merci
Cela devrait faire:
samp2 <- samp[,-1]
rownames(samp2) <- samp[,1]
En bref, non, il n’ya pas d’alternative à la réaffectation.
Edit: En me corrigeant, on peut aussi le faire à la place: attribuez les attributs rowname, puis supprimez la colonne:
R> df<-data.frame(a=letters[1:10], b=1:10, c=LETTERS[1:10])
R> rownames(df) <- df[,1]
R> df[,1] <- NULL
R> df
b c
a 1 A
b 2 B
c 3 C
d 4 D
e 5 E
f 6 F
g 7 G
h 8 H
i 9 I
j 10 J
R>
À partir de 2016, vous pouvez également utiliser le tidyverse
.
library(tidyverse)
samp %>% remove_rownames %>% column_to_rownames(var="names")
en une ligne
> samp.with.rownames <- data.frame(samp[,-1], row.names=samp[,1])
Vous pouvez exécuter ceci en 2 déclarations simples:
row.names(samp) <- samp$names
samp[1] <- NULL
Il semble que le one-liner soit encore plus simple le long de la ligne (en utilisant actuellement la R 3.5.3):
# generate original data.frame
df <- data.frame(a = letters[1:10], b = 1:10, c = LETTERS[1:10])
# use first column for row names
df <- data.frame(df, row.names = 1)
La colonne utilisée pour les noms de ligne est supprimée automatiquement.