У меня проблемы с загрузкой моего csv из Dropbox в RStudio Cloud.Можете ли вы проверить, что я делаю не так? - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь импортировать CSV из Dropbox в RStudio Cloud, и кажется, что RStudio неправильно читает файл. Набор данных состоит из 7 столбцов, более 5 миллионов строк данных о сборе платы за проезд, но RStudio, похоже, использует нечто совершенно иное.

Я загрузил CSV из https://data.ny.gov/Transportation/NYS-Thruway-Origin-and-Destination-Points-for-All-/chzq-388p на свой компьютер, а затем загрузил файл в Dropbox. Ссылка на файл Dropbox для файла: https://www.dropbox.com/s/y76m7r7wuzlj7oo/NYS_Thruway_Origin_and_Destination_Points_for_All_Vehicles_-_1_Hour_Intervals__2019%20%283%29.csv?dl=0.

Я использовал и rempis, и read.csv для загрузки файла, но RStudio не читает набор данных. Вместо набора данных RStudio Cloud вместо этого читает файл с двумя столбцами (row.names и X.Docutype).

Использование read.csv:

ThruwayTrafficData <- read.csv(file = "https://www.dropbox.com/s/y76m7r7wuzlj7oo/NYS_Thruway_Origin_and_Destination_Points_for_All_Vehicles_-_1_Hour_Intervals__2019%20%283%29.csv?dl=0", header = TRUE)

Использование rempis:

install.packages("rempis")
library(rempis)
ThruwayTrafficDataURL <- "https://www.dropbox.com/s/y76m7r7wuzlj7oo/NYS_Thruway_Origin_and_Destination_Points_for_All_Vehicles_-_1_Hour_Intervals__2019%20%283%29.csv?dl="
ThruwayTrafficData <- repmis::source_data(ThruwayTrafficDataURL, header = TRUE)

Когда я загружаю файл, а затем загружаю его в RStudio Desktop, используя путь к файлу, он загружается совершенно нормально.

Однако я хочу использовать RStudio Cloud. Мне нужно использовать DropBox, и я не могу загрузить файл в RStudio Cloud, потому что размер файла составляет около 700 МБ.

1 Ответ

1 голос
/ 22 апреля 2019

Вам нужно найти лучшую ссылку.Вы можете устранить неполадки, используя readLines("https://...") вместо read.csv (будьте осторожны, не выкидывайте все это на консоль, это раздражающе много).Вектор символов имеет длину 211 (для меня), и первые несколько строк начинаются с:

<!DOCTYPE html><html xml:lang="en" class="maestro" xmlns="http://www.w3.org/1999/xhtml"><head><script nonce="RH9SaRzfUGdPecKWSel7">
window._goch_ = {};
window.addEventListener('click', function(event) {
    'use strict';
    for (var elm = event.target; elm; elm = elm.parentElement) {
        if (elm.id && 

Это говорит о том, что ваш URL-адрес извлекает HTML-код позади страницы, а не сами данные.

Вместо этого измените конец вашего URL с dl=0 на dl=1, и read.csv работает нормально.Я не знаю API, стоящий за переменной, но он работает для меня (хотя и медленно ... это не маленький файл).

Более важно, если вы перейдете по указанной вами ссылке, это займетВы попадаете на страницу с надписью «Этот файл слишком велик для предварительного просмотра» и предоставляет раскрывающийся список javascript для прямой загрузки.Если вы начнете загрузку, начав ее, вы можете прервать ее.По крайней мере, в FF вы можете просмотреть URL-адрес загрузки (щелкните правой кнопкой мыши прерванную загрузку, выберите «Копировать ссылку на скачивание») и увидите, что он заканчивается на dl=1, хотя в URL-адресе есть еще несколько компонентов, чемчто я пытался.

Независимо от того, как я изменил 0 на 1 и загрузил его, я получил это:

> ThruwayTrafficData <- read.csv(file = "https://www.dropbox.com/s/y76m7r7wuzlj7oo/NYS_Thruway_Origin_and_Destination_Points_for_All_Vehicles_-_1_Hour_Intervals__2019%20%283%29.csv?dl=1", header = TRUE)
> str(ThruwayTrafficData)
 'data.frame':   5670906 obs. of  7 variables:
  $ Date                   : Factor w/ 108 levels "01/01/2019","01/02/2019",..: 108 108 108 108 108 108 108 108 108 108 ...
  $ Entrance               : Factor w/ 52 levels "15","16","17",..: 1 1 1 1 1 1 1 1 1 1 ...
  $ Exit                   : Factor w/ 52 levels "15","16H","17",..: 3 3 3 3 3 3 3 3 3 3 ...
  $ Interval.Beginning.Time: int  0 0 0 0 0 0 0 0 0 0 ...
  $ Vehicle.Class          : Factor w/ 12 levels "2H","2L","3H",..: 1 1 2 2 3 5 7 7 8 9 ...
  $ Vehicle.Count          : int  1 6 33 120 5 1 5 28 6 2 ...
  $ Payment.Type           : Factor w/ 2 levels "CASH","E-ZPass": 1 2 1 2 2 2 1 2 2 2 ...
...