У меня возникли проблемы с загрузкой моего CSV-файла из Dropbox в облако RStudio. Не могли бы вы проверить, что я делаю не так?

#r #cloud #rstudio #dropbox

#r #облако #rstudio #dropbox

Вопрос:

Я пытаюсь импортировать CSV-файл из Dropbox в облако RStudio, и кажется, что 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 (3).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 (3).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 (3).csv?dl="
ThruwayTrafficData <- repmis::source_data(ThruwayTrafficDataURL, header = TRUE)
  

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

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

Ответ №1:

Вам нужно найти лучшую ссылку. Вы можете устранить неполадки, используя 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 amp;amp; 
  

Это говорит о том, что ваш 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 (3).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 ...
  

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

1. Для справки вы можете найти информацию о параметрах dl и raw здесь: help.dropbox.com/desktop-web/force-download

2. Большое вам спасибо! Это сработало. В чем разница между dl = 0 и dl = 1? Если вы не тестируете строки чтения («https: /») в консоли, где вы это тестируете?

3. pythonspacecadet, я не понимаю, что вы имеете в виду… Я запустил это на консоли R (в emacs / ess, а не в RStudio, но здесь это не имеет никакого значения). Что касается dl= ссылки, предоставленной Грегом в комментарии, начинается с «Как принудительно загрузить ссылку на Dropbox» , объясняя, как ее использовать dl=1 . Как я уже сказал, я просто повозился и заставил его работать.