Подтвердить что ты не робот

Доступ к URL-адресу и чтение данных с помощью R

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

4b9b3361

Ответ 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