gpt4 book ai didi

从 R 读取许多 Excel 文件

转载 作者:行者123 更新时间:2023-12-02 11:40:56 25 4
gpt4 key购买 nike

这是我第一次使用 R,所以也许问题很微不足道

我需要从 url 的 xls 文件下载日期,每个文件都应该在一个数据框中。喜欢here

我决定使用gdata包(包“xlsReadWrite”不适用于R版本3.1.0,RODBC不适用于win64)

下载一个文件效果很好(年份例如 = 2013 )

readxls<-function()
{
library("gdata")
link<-paste0("http://nbp.pl/kursy/archiwum/archiwum_tab_a_",year,".xls")
xlsdata <<- read.xls(link, sheet = 1, perl = "C:\\Perl64\\bin\\perl.exe", header=TRUE)
}

我尝试使用循环将许多 .xls 读入 list() 中。 (例如 y_begin=2012、y_end=2014)

readxls<-function()
{
library("gdata")

ldata<<- list()
j=1
for (i in y_begin:y_end)
{
link<-paste0("http://nbp.pl/kursy/archiwum/archiwum_tab_a_",i,".xls")
xlsdata <<- read.xls(link, sheet = 1, perl = "C:\\Perl64\\bin\\perl.exe", header=TRUE)

ldata[j] <<- xlsdata
j<-j+1
}
}

我认为之后我可以合并它们,但不知道如何从列表中的单个数据帧中获取数据例如 > View(ldata[2]) 仅返回第一列

最佳答案

避免使用 for 循环,特别是因为它的副作用。最好在这里使用lapply。这是 R 的做事方式(函数式编程)。在这里我会这样做:

library(gdata)
readxls<-function()
{
ids <- seq(y_begin,y_end)
links <-paste0("http://nbp.pl/kursy/archiwum/archiwum_tab_a_",ids,".xls")

lapply (links,function(i)
read.xls(link, sheet = 1, perl = "C:\\Perl64\\bin\\perl.exe", header=TRUE)
)
}

这将返回 data.frame 列表,以合并它们,假设它们相同:

ll <- readxls()
do.call(rbind,ll)

关于从 R 读取许多 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24304512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com