有没有一种方法可以指定Web站点URL并将其从数据获取到CSV文件,以便使用R进行分析?
Answers:
在最简单的情况下,只需执行
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随附的“数据导入/导出”手册。
cv_today <- read.csv(url("https://github.com/eparker12/nCoV_tracker/blob/master/input_data/coronavirus_today.csv"))
raw
在Web界面中选择,使用该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
在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
来自github的数据
scan
可以自动从网页读取;您不必一定要弄乱连接。
scan
,而是read.table()
或者read.csv()
,给你更高级别的访问。
scan
。(这就是我使用过的情况。)
X <- read.csv(url("http://some.where.net/data/foo.csv"))
加上read.csv()可能需要的选项即可。