Convertir les noms de lignes dans la première colonne
J'ai un bloc de données comme ceci:
df
VALUE ABS_CALL DETECTION P-VALUE
1007_s_at "957.729231881542" "P" "0.00486279317241156"
1053_at "320.632701283368" "P" "0.0313356324173416"
117_at "429.842323161046" "P" "0.0170004527476119"
121_at "2395.7364289242" "P" "0.0114473584876183"
1255_g_at "116.493632746934" "A" "0.39799368200131"
1294_at "739.927122116896" "A" "0.0668649772942343"
Je veux convertir les noms de lignes dans la première colonne. Actuellement, je utiliser quelque chose comme cela pour faire les noms de lignes que la première colonne:
d <- df
names <- rownames(d)
rownames(d) <- NULL
data <- cbind(names,d)
Est-il une seule ligne pour ce faire?
- double possible de R: la conversion des noms de ligne dans de multiples blocs de données de la colonne dans le bloc de données
- Vous n'avez pas besoin de paquets supplémentaires, voici un one-liner:
d <- cbind(rownames(d), data.frame(d, row.names=NULL))
- Le commentaire de @ssp3nc3r doit être accepté de répondre à
Vous devez vous connecter pour publier un commentaire.
Vous pouvez les deux supprimer les noms de lignes et de les convertir en une colonne par référence (sans réaffectation de mémoire à l'aide de
->
) à l'aide desetDT
et seskeep.rownames = TRUE
argument de ladata.table
paquetComme mentionné par @snoram, vous pouvez donner à la nouvelle colonne le nom que vous voulez, par exemple,
setDT(df, keep.rownames = "newname")
permettrait d'ajouter "nouveau_nom" comme les lignes de la colonne.colnames(df)[1] <- "newname"
pour renommer la première colonne si nécessaire.setnames(df, 1, "newname")
est ledata.table
façon.setDT(df, keep.rownames = "newname")[]
setDT()
appel - pas besoin desetnames()
as.data.table()
: Si la valeur est TRUE, ajoute l'entrée de l'objet de noms dans une colonne distincte nommée "rn". gardez.rownames = "id" les noms de la colonne "id" à la placeOu vous pouvez utiliser
dplyr
'sadd_rownames
qui fait la même chose que David réponse:Mise à JOUR (mi-2016): (incorporé à la ci-dessus)
ancienne fonction appelée
add_rownames()
a été supprimée et est remplacée partibble::rownames_to_column()
(mêmes fonctions, mais Hadley refaitdplyr
un peu).Une option de ligne :
rownames
comme une colonne à la dernière, en effet, pas en tant que première colonne.rownames
, non? Ils ont voulu la mettre au début, mais.Alternativement, vous pouvez créer un nouveau dataframe (ou remplacer l'actuel, comme l'exemple ci-dessous) de sorte que vous n'avez pas besoin d'utiliser n'importe quel package externe. Cependant ce moyen peut ne pas être efficace avec d'énormes dataframes.
df <- cbind(names = rownames(df), df)
Déplacé mon commentaire en réponse par la suggestion ci-dessus:
Vous n'avez pas besoin de paquets supplémentaires, voici un one-liner:
dplyr::as_data_frame(df, rownames = "your_row_name")
vous donnera encore plus simple résultat.dplyr
,igraph
....?