2013-04-07 12 views
21

छोड़ दो मेरे पास दो शीर्ष लेख पंक्तियों वाला एक CSV फ़ाइल है, पहली पंक्ति मैं शीर्षलेख बनना चाहता हूं, लेकिन दूसरी पंक्ति जिसे मैं त्यागना चाहता हूं।read.csv, पहली पंक्ति पर शीर्षलेख, दूसरी पंक्ति

data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE) 

पहली पंक्ति हेडर हो जाता है और फ़ाइल की दूसरी पंक्ति अपने डेटा फ्रेम की पहली पंक्ति हो जाता है:: यदि मैं निम्न आदेश कर

Xaaaaaaaaa  X X.1  Xbbbbbbbbbb  X.2 X.3 
1   Date PX_LAST NA   Date PX_LAST NA 
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA 

मैं इस दूसरी पंक्ति को छोड़ना चाहते सीएसवी की फाइल और सिर्फ

X1.HK.Equity  X X.1 X2.HK.Equity  X.2 X.3 
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA 

मैं data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1) की कोशिश की मिल लेकिन यह है कि रिटर्न:

 Date PX_LAST X  Date.1 PX_LAST.1 X.1 
1 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
2 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
3 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
4 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
5 07/01/2003 40.195 NA 07/01/2003 19.609 NA 
6 08/01/2003 40.386 NA 08/01/2003 19.547 NA 

हेडर पंक्ति मेरी सीएसवी फ़ाइल की दूसरी पंक्ति से आता है, न कि पहली पंक्ति।

धन्यवाद।

+4

के अंदर लिख सकते हैं आप दो चरण दृष्टिकोण का प्रयास कर सकते हैं। पहले चरण में शीर्षलेख के बिना तीसरी पंक्ति से शुरू होने वाला डेटा पढ़ें। एक चरित्र वेक्टर के रूप में केवल पहली पंक्ति पढ़ें और फिर डेटा वेक्टर को डेटा के नाम के रूप में जोड़ें। – djhurio

+0

मैंने आपके कोड की जांच की और यह लाइन मेरे लिए काम करती है: df <- read.csv (fname, header = t, stringsAsFactors = FALSE, skip = 1) – andrii

उत्तर

43

इस चाल करना चाहिए:

all_content = readLines("file.csv") 
skip_second = all_content[-2] 
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE) 

readLines का उपयोग कर पहला कदम एक सूची है, जहां सूची में प्रत्येक आइटम फ़ाइल में एक पंक्ति का प्रतिनिधित्व करता है में पूरी फ़ाइल पढ़ता है। इसके बाद, आप इस तथ्य का उपयोग करके दूसरी पंक्ति को त्याग देते हैं कि आर में नकारात्मक अनुक्रमण select all but this index है। अंत में, हम इस डेटा को पर data.frame में संसाधित करने के लिए फ़ीड करते हैं।

+0

आपके उत्तर के लिए धन्यवाद। अंतिम पंक्ति 'dat = read.csv (skip_second, header = TRUE, stringsAsFactors = FALSE) 'मुझे एक त्रुटि देता है' फ़ाइल में त्रुटि (फ़ाइल," आरटी "): अमान्य 'विवरण' तर्क'। फ़ाइल पथ के बजाय एक चर को स्वीकार करने के लिए मैं read.csv कैसे प्राप्त कर सकता हूं? – mchangun

+2

इसके अलावा 'textConnection' का प्रयोग करें। –

+4

पॉल के सिर के रूप में, इस दृष्टिकोण ने छोटी फ़ाइलों (5 एमबी से कम) के साथ शानदार ढंग से काम किया, लेकिन बड़ी फाइलों में परेशानी थी। मैंने इस पर एक सवाल पूछा और इसे यहां बड़ी फाइलों पर अच्छी तरह से काम करने के बाद एक उत्तर दिया: http://stackoverflow.com/questions/24921387/long-lag-time-importing-large-csvs-in-r-with- शीर्षक में दूसरी पंक्ति –

1

आप dataframe से हैडर सीधे के बाद पहली पंक्ति (रों) पट्टी कर सकते हैं एक पंक्ति में यह करने के लिए अनुमति देने के लिए:

df<-read.csv("test.txt",header=T)[-1,] 

अगर मेरे datafile "test.txt" निम्नलिखित है:

var1, var2 
units1, units2 
2.3,6.8 
4.5,6.7 

यह मेरे देता

> read.csv("test.txt",header=T)[-1,] 
var1 var2 
2 2.3 6.8 
3 4.5 6.7 

यह आपके प्रश्न के उत्तर देता है वास्तव में, लेकिन सिर्फ सामान्यीकरण करने के लिए इस सवाल का जवाब है, तो आप भी इस तरह से एम वें लाइनों के लिए एन वें छोड़ सकते हैं:

df<-read.csv("test.txt",header=T)[-N:-M,] 

जहां एन और एम पाठ्यक्रम के पूर्णांक हैं।

0

दूसरी पंक्ति लंघन के लिए, तुम सिर्फ

data = read.csv("Filename.csv", header = T)[-2,] 

-2 दूसरी पंक्ति लंघन के लिए लिखा है की ज़रूरत है। यदि आप एक कॉलम छोड़ना चाहते हैं तो आप [, # यहां]

संबंधित मुद्दे