将多个文件读取到多个数据框中 [英] Reading multiple files into multiple data frames
本文介绍了将多个文件读取到多个数据框中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
library(foreign)
for(i in c( (1:3){
data_ [i] _ [j]< -read.dta(d:/ folder / data_ [i] _ [j] .dta)
}
}
但是,这看起来是错误的 - 绝对。
任何帮助将不胜感激。
谢谢!
$ b $ ($ a
$ (j in 1:3){
obj_name< - paste('data',i,j,sep ='_')
file_name< - file.path('d:/ folder' ,paste(obj_name,'dta',sep ='。'))
input < - read.dta(file_name)
assign(obj_name,value = input)
}
}
编辑 b
为循环避免,并使用@joran的建议
list.files
dta_files< - list.files ('d:/ folder',pattern ='.dta',full.names = T)
lapply(dta_files,function(fname){
input< - read.dta fname)
obj_name< - tools :: file_path_sans_ext(basename(fname))
assign(obj_name,value input,env = .GlobalEnv)})
In d:\folder, I have many Stata files, such as data_aa_1.dta, data_aa_2.dta, data_aa_3.dta data_bb_1.dta, data_bb_2.dta, data_bb_3.dta, data_cc_1.dta.... I want to convert those files and get as many data frames as the dta files in R. So, I believe I have to loop over c("aa", "bb", "cc") and c(1:3). I tried something like the following:
library(foreign)
for(i in c("aa","bb","cc"){
for (j in 1:3){
data_[i]_[j] <-read.dta("d:/folder/data_[i]_[j].dta")
}
}
But, that looks wrong -- definitely.
Any help will be appreciated.
Thanks!
解决方案
There is undoubtedly a more elegant solution, however
library(foreign)
for(i in c("aa","bb","cc"){
for (j in 1:3){
obj_name <- paste('data', i, j, sep ='_')
file_name <- file.path('d:/folder',paste(obj_name,'dta', sep ='.'))
input <- read.dta(file_name)
assign(obj_name, value = input)
}
}
EDIT
Avoiding the for
loop, and using @joran's suggestion of list.files
dta_files <- list.files('d:/folder', pattern = '.dta', full.names = T)
lapply(dta_files, function(fname){
input <- read.dta(fname)
obj_name <- tools::file_path_sans_ext(basename(fname))
assign(obj_name, value input, env = .GlobalEnv)})
这篇关于将多个文件读取到多个数据框中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文