Подтвердить что ты не робот

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 файла, а не из первой строки.

Спасибо.

4b9b3361

Ответ 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 - целые числа.