我正在尝试通过R连接到在线数据库,可在此处找到: http://open.canada.ca/data/en/dataset/2270e3a4-447c-45f6-8e63-aea9fe94948f
如何将数据表加载到R中,然后只需更改代码中的表名即可访问其他表?我并不特别关心我需要使用哪种语言(JSON,JSOn-LD,XML)。
提前致谢!
答案 0 :(得分:1)
假设您知道每个数据集的URL,可以在此处找到类似的问题:
Download a file from HTTPS using download.file()
为此,它变为:
library(RCurl)
URL <- "http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng"
x <- getURL(URL)
URLout <- read.csv(textConnection(x),row.names=NULL)
我通过右键单击访问按钮并复制地址来获取URL。
我必须声明row.names=NULL
,因为第一行中的列数不等于其他位置的列数,因此read.csv
假定行名as described here。我不确定这些数据集的URL在更新时是否会发生变化,但这不是获取此数据的真正方便的方法。对于直观地更改数据集,JSON似乎没那么好。
至少通过这种方式,您可以创建一个URL列表并执行以下操作:
URL <- list(getURL("http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng"),
getURL("http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr72-eng.htm&lan=eng"))
URLout <- lapply(URL,function(x) read.csv(textConnection(x),row.names=NULL,skip=2))
我再次不喜欢声明row.names=NULL
,当我查看文件时,我没有看到不一致的列数,但这至少会让文件进入R环境。在多个URL上执行操作可能需要更多的工作。
进一步努力获得有用的colnames
:
URL <- "http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng"
x <- getURL(URL)
URLout <- read.csv(textConnection(x),row.names=NULL, skip=2)
当在CSV中读取时,争论skip = 2
将跳过前两行,并将产生一些标题名称。因为标题是数字,所以X将放在前面。在这种情况下,第2行在第二列中将具有值“number”。不幸的是,这个数据似乎是打算在excel中使用,这真的很难过。
答案 1 :(得分:0)
1)您需要将CSV下载到您有权访问的某个目录中。
2)使用“read.csv”或“read_csv”或“fread”将该csv文件读入R中。
yourTableName<-read.csv("C:/..../canadaDataset.csv")
3)您可以将csv命名为您想要的任何对象名称。