Можно ли указать и получить данные с URL-адреса веб-сайта в файл CSV для анализа с помощью R?
Доступ к URL-адресу и чтение данных с помощью R
Ответ 1
В простейшем случае просто
X <- read.csv(url("http://some.where.net/data/foo.csv"))
плюс, которые могут потребоваться всегда read.csv()
.
Длинный ответ: Да, это можно сделать, и многие пакеты используют эту функцию в течение многих лет. Например. tseries пакеты используют именно эту функцию для загрузки цен на акции с Yahoo! в течение почти десятилетия:
R> library(tseries)
Loading required package: quadprog
Loading required package: zoo
‘tseries’ version: 0.10-24
‘tseries’ is a package for time series analysis and computational finance.
See ‘library(help="tseries")’ for details.
R> get.hist.quote("IBM")
trying URL 'http://chart.yahoo.com/table.csv? ## manual linebreak here
s=IBM&a=0&b=02&c=1991&d=5&e=08&f=2011&g=d&q=q&y=0&z=IBM&x=.csv'
Content type 'text/csv' length unknown
opened URL
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
.......... .......... .......... .......... ..........
........
downloaded 258 Kb
Open High Low Close
1991-01-02 112.87 113.75 112.12 112.12
1991-01-03 112.37 113.87 112.25 112.50
1991-01-04 112.75 113.00 111.87 112.12
1991-01-07 111.37 111.87 110.00 110.25
1991-01-08 110.37 110.37 108.75 109.00
1991-01-09 109.75 110.75 106.75 106.87
[...]
Все это очень хорошо документировано на страницах руководства для help(connection)
и help(url)
. Также см. Manul в разделе "Импорт/экспорт данных", который поставляется с R.
Ответ 2
Часто данные на веб-страницах представлены в виде таблицы XML. Вы можете прочитать XML-таблицу в R, используя пакет XML.
В этом пакете функция
readHTMLTable(<url>)
будет просматривать страницу для таблиц XML и возвращать список фреймов данных (по одному для каждой найденной таблицы).
Ответ 3
Помимо read.csv(url("..."))
, вы также можете использовать read.table("http://...")
.
Пример:
> sample <- read.table("http://www.ats.ucla.edu/stat/examples/ara/angell.txt")
> sample
V1 V2 V3 V4 V5
1 Rochester 19.0 20.6 15.0 E
2 Syracuse 17.0 15.6 20.2 E
...
43 Atlanta 4.2 70.6 32.6 S
>
Ответ 4
scan
может автоматически считываться с веб-страницы; вам не обязательно связываться с соединениями.
Ответ 5
базовой
read.csv
без функции url
работает нормально. Наверное, я что-то упустил, если Дирк Эддельбуэттель включил его в свой ответ:
ad <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv")
head(ad)
X TV radio newspaper sales
1 1 230.1 37.8 69.2 22.1
2 2 44.5 39.3 45.1 10.4
3 3 17.2 45.9 69.3 9.3
4 4 151.5 41.3 58.5 18.5
5 5 180.8 10.8 58.4 12.9
6 6 8.7 48.9 75.0 7.2
Другие варианты с использованием двух популярных пакетов:
data.table
library(data.table)
ad <- fread("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv")
head(ad)
V1 TV radio newspaper sales
1: 1 230.1 37.8 69.2 22.1
2: 2 44.5 39.3 45.1 10.4
3: 3 17.2 45.9 69.3 9.3
4: 4 151.5 41.3 58.5 18.5
5: 5 180.8 10.8 58.4 12.9
6: 6 8.7 48.9 75.0 7.2
readr
library(readr)
ad <- read_csv("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv")
head(ad)
# A tibble: 6 x 5
X1 TV radio newspaper sales
<int> <dbl> <dbl> <dbl> <dbl>
1 1 230.1 37.8 69.2 22.1
2 2 44.5 39.3 45.1 10.4
3 3 17.2 45.9 69.3 9.3
4 4 151.5 41.3 58.5 18.5
5 5 180.8 10.8 58.4 12.9
6 6 8.7 48.9 75.0 7.2