#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-download2. Большое вам спасибо! Это сработало. В чем разница между dl = 0 и dl = 1? Если вы не тестируете строки чтения («https: /») в консоли, где вы это тестируете?
3. pythonspacecadet, я не понимаю, что вы имеете в виду… Я запустил это на консоли R (в emacs / ess, а не в RStudio, но здесь это не имеет никакого значения). Что касается
dl=
ссылки, предоставленной Грегом в комментарии, начинается с «Как принудительно загрузить ссылку на Dropbox» , объясняя, как ее использоватьdl=1
. Как я уже сказал, я просто повозился и заставил его работать.