我刚开始使用R,所以这可能是一个非常愚蠢的问题。我正在尝试使用以下方法导入数据:
emdata=read.csv(file="http://lottery.merseyworld.com/cgi-bin/lottery?days=19&Machine=Z&Ballset=0&order=1&show=1&year=0&display=CSV",header=TRUE)
我的问题是它将csv文件读入一个列(顺便说一下,彩票数据只是因为它可以公开下载 - 用作练习来理解我在R中能做什么和不能做什么),而不是将其格式化为有多列数据。有人会介意帮忙,即使这是微不足道的
答案 0 :(得分:4)
嗯,对于一个声称采用csv格式的页面来说,这有点令人讨厌。您可以跳过前5行,这将导致R正确读取(大部分)文件的其余部分。
emdata=read.csv(file=...., header=TRUE, skip=5)
通过查看来源我获得了要跳过的行数。你仍然需要删除中间和结尾的残骸,然后清理列(因为嵌入的文本,它们都是因素)。
将页面保存到硬盘,编辑它以删除所有无用位,然后导入它会容易得多。
...回答你的真实问题,是的,你可以直接从网上导入数据。通常,无论您何时阅读文件,都可以替换完全限定的URL - R足够聪明,可以执行正确的事[tm]。这个特定的网址恰好特别混乱。
答案 1 :(得分:0)
您可以从给定的网址中读取文字,过滤掉令人讨厌的行,然后将结果读取为CSV,如下所示:
lines <- readLines(url("http://lottery.merseyworld.com/cgi-bin/lottery?days=19&Machine=Z&Ballset=0&order=1&show=1&year=0&display=CSV"))
read.csv(text=lines[grep("([^,]*,){5,}", lines)])
上述正则表达式匹配包含至少五个逗号的任何行。