从Web导入多个csv到一个数据框

问题描述

我想从网络上读取几个csv文件,并将数据保存到数据框中。 如我所见,如果文件在我的计算机上,这将非常容易,但是我并不总是希望下载文件

示例:

  "https://www.football-data.co.uk/mmz4281/1819/F1.csv","https://www.football-data.co.uk/mmz4281/1718/F1.csv","https://www.football-data.co.uk/mmz4281/1617/F1.csv","https://www.football-data.co.uk/mmz4281/1516/F1.csv","https://www.football-data.co.uk/mmz4281/1415/F1.csv","https://www.football-data.co.uk/mmz4281/1314/F1.csv","https://www.football-data.co.uk/mmz4281/1213/F1.csv","https://www.football-data.co.uk/mmz4281/1112/F1.csv","https://www.football-data.co.uk/mmz4281/1011/F1.csv"

这些是CSV文件。也许可以通过函数或循环来实现,但是我不知道如何。

也许你可以帮助我。

问候

解决方法

从网络中读取文件就像从文件系统中读取文件一样容易。您只需将URL而不是文件路径传递到readr::read_csv()(您用readr标记了问题,所以我想您要使用它)。

假设您的文件位于矢量中:

files <- c("https://www.football-data.co.uk/mmz4281/1819/F1.csv","https://www.football-data.co.uk/mmz4281/1718/F1.csv","https://www.football-data.co.uk/mmz4281/1617/F1.csv","https://www.football-data.co.uk/mmz4281/1516/F1.csv","https://www.football-data.co.uk/mmz4281/1415/F1.csv","https://www.football-data.co.uk/mmz4281/1314/F1.csv","https://www.football-data.co.uk/mmz4281/1213/F1.csv","https://www.football-data.co.uk/mmz4281/1112/F1.csv","https://www.football-data.co.uk/mmz4281/1011/F1.csv")

您可以使用readr::read_csv来读取特定文件,并使用purrr::map_dfr将它们组合成一个数据帧:

df <- purrr::map_dfr(files,readr::read_csv)

此操作对files的内容进行迭代,将readr::read_csv应用于每个元素,然后将它们按行组合到一个数据帧中(因此dfr)。