R में मौजूदा डेटा फ़्रेम में एक कॉलम में पंक्ति नामों में मानों को कनवर्ट करें


108

मैं मौजूदा डेटा फ्रेम के कॉलम में मानों को पंक्ति नामों में परिवर्तित करना चाहूंगा। क्या डेटा फ्रेम को निर्यात किए बिना ऐसा करना संभव है और फिर row.names =कॉल के साथ इसे फिर से खोलना ?

उदाहरण के लिए मैं रूपांतरित करना चाहूंगा:

 > 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

में:

> 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

धन्यवाद

जवाबों:


135

यह करना चाहिए:

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

तो संक्षेप में, कोई आश्वस्त करने का विकल्प नहीं है।

संपादित करें: अपने आप को ठीक करते हुए, कोई इसे कर भी सकता है: पंक्तिनाम विशेषताएँ असाइन करें, फिर कॉलम निकालें:

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] त्रुटि row.names<-.data.frame(में *tmp*, मूल्य = मूल्य): अमान्य 'row.names' लंबाई इसके अलावा: चेतावनी संदेश: एक तिगुना पर पंक्ति नामों को सेट करना पदावनत है।
user3673

36

2016 तक आप इसका उपयोग भी कर सकते हैं tidyverse

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

1
अधिक विशेष रूप से, यह हैtibble::column_to_rownames
ओट टोमेट

1
मुझे एक चेतावनी मिलती है "एक टिबेबल पर पंक्ति नामों को सेट करना पदावनत है"
क्वांटम

1
Tibble दृश्य rownames दिखाती है नहीं है, हालांकि, यह देखने के लिए आप as.data.frame को पाइप यह करने की जरूरत है ()samp %>% remove_rownames %>% column_to_rownames(var="names") %>% as.data.frame()
Matteo

22

एक पंक्ति में

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

11

आप इसे 2 सरल कथनों में निष्पादित कर सकते हैं:

row.names(samp) <- samp$names
samp[1] <- NULL

आर 3.5.3 में काम करता है
TheSciGuy

5

ऐसा लगता है कि लाइन के साथ वन-लाइनर और भी सरल हो गया (वर्तमान में 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)

पंक्ति नामों के लिए उपयोग किया गया कॉलम स्वचालित रूप से हटा दिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.