【发布时间】:2011-09-12 01:20:30
【问题描述】:
有没有一种方法可以指定并从网站 URL 获取数据到 CSV 文件以使用 R 进行分析?
【问题讨论】:
有没有一种方法可以指定并从网站 URL 获取数据到 CSV 文件以使用 R 进行分析?
【问题讨论】:
在最简单的情况下,只需这样做
X <- read.csv(url("http://some.where.net/data/foo.csv"))
加上read.csv() 可能需要的选项。
在 2020 年 9 月或 9 年后编辑:
几年来,R 还支持直接将 URL 传递给read.csv:
X <- read.csv("http://some.where.net/data/foo.csv")
2020 年底编辑。原帖继续。
长答案:是的,这是可以做到的,许多软件包多年来一直使用该功能。例如。 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 随附的“数据导入/导出”手册。
【讨论】:
X <- read.csv(url("http://some.where.net/data/foo.csv")) 加上 read.csv() 可能需要的选项。
cv_today <- read.csv(url("https://github.com/eparker12/nCoV_tracker/blob/master/input_data/coronavirus_today.csv"))
raw,使用该 URL。
read.csv 没有 url 函数就可以正常工作。如果 Dirk Eddelbuettel 将其包含在他的回答中,我可能会遗漏一些东西:
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
使用两个流行包的另一种选择:
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
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
【讨论】:
网页上的数据通常采用 XML 表的形式。您可以使用the package XML 将 XML 表读入 R。
在这个包中,函数
readHTMLTable(<url>)
将在页面中查找 XML 表并返回数据框列表(找到的每个表对应一个)。
【讨论】:
除了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
>
【讨论】:
csv 数据
scan可以自动读取网页;你不一定要搞乱连接。
【讨论】:
scan,而是想要read.table() 或read.csv(),它们会为您提供更高级别的访问权限。
scan 的时候。 (这就是我使用它的情况。)