Доступ к URL и чтение данных с помощью R - PullRequest
48 голосов
/ 10 июня 2011

Есть ли способ указать и получить данные с URL-адреса веб-сайта в файл CSV для анализа с использованием R?

Ответы [ 5 ]

60 голосов
/ 10 июня 2011

В простейшем случае просто выполните

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). Также см. Руководство по «Импорту / экспорту данных», поставляемому с R.

9 голосов
/ 10 июня 2011

Часто данные на веб-страницах представлены в виде таблицы XML.Вы можете прочитать таблицу XML в R, используя пакет XML .

. В этом пакете функция

readHTMLTable(<url>)

просматривает страницу для таблиц XML и возвращаетсписок фреймов данных (по одному на каждую найденную таблицу).

6 голосов
/ 29 декабря 2017

base

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.таблица

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
6 голосов
/ 24 августа 2014

Кроме 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
> 
1 голос
/ 10 июня 2011

scan может читать с веб-страницы автоматически;Вам не обязательно связываться с соединениями.

...