Bir sütundaki değerleri, R'deki mevcut bir veri çerçevesindeki satır adlarına dönüştürün


108

Mevcut bir veri çerçevesinin bir sütunundaki değerleri satır adlarına dönüştürmek istiyorum. Bunu, veri çerçevesini dışa aktarmadan ve ardından bir row.names =çağrı ile yeniden içe aktarmadan yapmak mümkün mü ?

Örneğin şunu dönüştürmek istiyorum:

 > 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

içine:

> 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

Teşekkürler

Yanıtlar:


135

Bu şunları yapmalıdır:

samp2 <- samp[,-1]
rownames(samp2) <- samp[,1]

Kısacası, yeniden görevlendirmenin bir alternatifi yok.

Düzenleme: Kendimi düzelterek, bunu yerinde de yapabilirsiniz: rowname nitelikleri atayın, ardından sütunu kaldırın:

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> 

4
> rownames (df) <- df [, 1] Hata row.names<-.data.frame( *tmp*, değer = değer): geçersiz 'satır.adlar' uzunluğu Ek olarak: Uyarı mesajı: Bir tibble üzerinde satır adlarının ayarlanması kullanımdan kaldırıldı.
user3673

36

2016 itibariyle tidyverse.

library(tidyverse)
samp %>% remove_rownames %>% column_to_rownames(var="names")

1
Daha spesifik olarak, öyletibble::column_to_rownames
Ott Toomet

1
"Bir
tibble

1
tibble görselleştirme rown isimleri göstermiyor, ancak görmek için as.data.frame ()samp %>% remove_rownames %>% column_to_rownames(var="names") %>% as.data.frame()
Matteo

22

tek satırda

> samp.with.rownames <- data.frame(samp[,-1], row.names=samp[,1])


5

Görünüşe göre tek hat hattı boyunca daha da basitleşti (şu anda R 3.5.3 kullanıyor):

# 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)

Satır adları için kullanılan sütun otomatik olarak kaldırılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.