Read.csv, заголовок в первой строке, пропустить вторую строку
У меня есть файл 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
Я хочу пропустить эту вторую строку CSV файла и просто получить
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
Строка заголовка поступает из второй строки моего CSV файла, а не из первой строки.
Спасибо.
Ответы
Ответ 1
Это должно сделать трюк:
all_content = readLines("file.csv")
skip_second = all_content[-2]
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE)
Первый шаг с использованием readLines
считывает весь файл в список, где каждый элемент в списке представляет строку в файле. Затем вы отбрасываете вторую строку, используя тот факт, что отрицательная индексация в R означает select all but this index
. Наконец, мы передаем эти данные в read.csv
, чтобы обработать его в data.frame
.
Ответ 2
Вы можете удалить первую строку (строки) после заголовка непосредственно из фрейма данных, чтобы сделать это в одной строке:
df<-read.csv("test.txt",header=T)[-1,]
если мой файл данных 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
Это точно ответит на ваш вопрос, но для обобщения ответа вы также можете пропустить N th в M -й строки следующим образом:
df<-read.csv("test.txt",header=T)[-N:-M,]
где N и M - целые числа.