2011-09-27 14 views
23

की अनुक्रमणिका संख्या बदलें डेटाफ्रेम में कुछ मैनिपुलेशन के साथ किए जाने के बाद, मुझे परिणाम डेटाफ्रेम मिला। लेकिन सूचकांक नीचे सूचीबद्ध नहीं हैं।डेटाफ्रेम

    MsgType/Cxr NoOfMsgs AvgElpsdTime(ms) 
    161     AM  86   30.13 
    171     CM  1    104 
    18     CO  27   1244.81 
    19     US  23   1369.61 
    20     VK  2    245 
    21     VS  11   1273.82 
    112     fqa  78   1752.22 
    24     SN  78   1752.22 

मैं परिणाम को नीचे जैसा प्राप्त करना चाहता हूं।

    MsgType/Cxr NoOfMsgs AvgElpsdTime(ms) 
    1     AM  86   30.13 
    2     CM   1    104 
    3     CO  27   1244.81 
    4     US  23   1369.61 
    5     VK  2    245 
    6     VS  11   1273.82 
    7     fqa  78   1752.22 
    8     SN  78   1752.22 

कृपया गाइड करें कि मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

35

ये आपके dataframe की rownames, जो डिफ़ॉल्ट रूप से 1:nrow(dfr) कर रहे हैं। जब आप डेटाफ्रेम को फिर से व्यवस्थित करते हैं, तो मूल राउनम्स भी पुन: व्यवस्थित होते हैं। क्रमिक रूप से सूचीबद्ध नई व्यवस्था की पंक्तियों के लिए, बस का उपयोग करें:

rownames(dfr) <- 1:nrow(dfr) 
3

सूचकांक वास्तव में डेटा फ्रेम पंक्ति नाम है।

rownames(dd) = 1:dim(dd)[1] 

या

rownames(dd) = 1:nrow(dd) 

व्यक्तिगत रूप से, मैं कभी नहीं rownames का उपयोग करें: उन्हें बदलने के लिए, आप की तरह कुछ कर सकते हैं।

आपके उदाहरण में, मुझे संदेह है कि आपको उनके बारे में चिंता करने की आवश्यकता नहीं है, क्योंकि आप उन्हें 1 से n नाम दे रहे हैं। विशेष रूप से, जब आप अपने डेटा फ्रेम को सब्सक्राइब करते हैं तो राउनम्स फिर से गलत हो जाएंगे। उदाहरण के लिए,

##Simple data frame 
R> dd = data.frame(a = rnorm(6)) 
R> dd$type = c("A", "B") 
R> rownames(dd) = 1:nrow(dd) 
R> dd 
     a type 
1 2.1434 A 
2 -1.1067 B 
3 0.7451 A 
4 -0.1711 B 
5 1.4348 A 
6 -1.3777 B 

##Basic subsetting 
R> dd_sub = dd[dd$type=="A",] 
##Rownames are "wrong" 
R> dd_sub 
     a type 
1 2.1434 A 
3 0.7451 A 
5 1.4348 A 
+1

मुझे लगता है कि 'लंबाई' डेटाफ्रेम के कॉलम की संख्या देता है। – James

+0

हां, 'nrow' या 'NROW' का उपयोग करना सुरक्षित है। –

+0

आह, मुझे बाधा मिली और मैंने जो लिखा था उसके बारे में नहीं सोचा। धन्यवाद – csgillespie

26

या, बस

rownames(df) <- NULL 

आप क्या चाहते हैं देता है।

> d <- data.frame(x = LETTERS[1:5], y = letters[1:5])[sample(5, 5), ] 
> d 
    x y 
5 E e 
4 D d 
3 C c 
2 B b 
1 A a 
> rownames(d) <- NULL 
> d 
    x y 
1 E e 
2 D d 
3 C c 
4 B b 
5 A a 
संबंधित मुद्दे