Импортировать XLS, readxl / gdata, вводить DF с помощью NA

#r #readxl

#r #readxl

Вопрос:

Я пытаюсь перенести этот файл .xls в R:https://www.reit.com/sites/default/files/returns/MonthlyHistoricalReturns.xls

Я попытался ввести его непосредственно с URL-адреса на компьютере с Windows. Я уже сталкивался с проблемами https и http, а также с проблемой perl для Windows. Чтобы обойти это, я попытался запустить на ubuntu, а также сначала загрузить файл.

Мои последние две попытки с readxl и gdata создают фрейм данных, хотя ни в одном из них нет данных. Сообщений об ошибках нет.

 NAREIT <- readxl::read_xls("~/Downloads/MonthlyHistoricalReturns.xls")
  

Это приводит к 38 наблюдениям одной переменной, все NA.

 NAREIT <- gdata::read.xls("~/Downloads/MonthlyHistoricalReturns.xls")
  

И это приводит к 0 наблюдениям за 1 переменной, «В таблице отсутствуют данные» — это текст, записанный внутри единственной ячейки.

Файл, по общему признанию, уродлив, с несколькими ненужными строками заголовка, объединенными ячейками, замороженными представлениями и т.д. Я попытался указать диапазоны, столбцы, строки, строки для пропуска, имена столбцов и т.д. — Все, что я мог придумать из документации readxl и gdata.

Я могу просто сократить нужный мне диапазон, сохранить как CSV и работать с ним. Но, поскольку мне, вероятно, придется регулярно возвращаться к этому, я ищу «правильный» способ открыть этот файл. Любые мысли приветствуются.

Ответ №1:

Похоже, что есть несколько строк заголовка, поэтому вам нужно будет выяснить, что вы хотели бы использовать в качестве заголовка, или на самом деле просмотреть несколько страниц по stack overflow, которые показывают вам, как работать с заголовками 2 строк.

В любом случае, я могу импортировать его таким образом, и, похоже, все в порядке

 library(readxl)
MonthlyHistoricalReturns <- read_excel("MonthlyHistoricalReturns.xls", sheet = "Index Data", skip = 7)
  

Я перешел к строке 7, чтобы начать ваш заголовок там

Комментарии:

1. Интересно. Проблема, похоже, была с именем листа. Я попробовал почти точно то, что вы предложили, с skip = 7, чтобы избежать строк заголовка, и в итоге получил DF из 31 наблюдения 1 переменной. Я также попытался указать лист как 1, и это единственный лист. Вызов листа по имени делает свое дело. Большое спасибо!