【发布时间】:2017-05-06 19:16:12
【问题描述】:
我有一个包含 500 多个 .dta 文件的文件夹。我想将其中一些文件加载到单个 R 对象中。
我的 .dta 文件有一个由四部分组成的通用名称:“两个字母/四个数字/y/.dta”。例如,名称可以是“de2015y.dta”或“fr2008y.dta”。只有与两个字母和四个数字对应的部分在 .dta 文件中发生变化。
我编写了一个有效的代码,但我对它不满意。我想避免使用循环并缩短它。
我的代码是:
# Select the .dta files I want to load
#.....................................
name <- list.files(path="E:/Folder") # names of the .dta files in the folder
db <- as.data.frame(name)
db$year <- substr(db$name, 3, 6)
db <- subset (db, year == max(db$year)) # keep last year available
db$country <- substr(db$name, 1, 2)
list.name <- as.list(db$country)
# Loading all the .dta files in the Global environment
#..................................................
for(i in c(list.name)){
obj_name <- paste(i, '2015y', sep='')
file_name <- file.path('E:/Folder',paste(obj_name,'dta', sep ='.'))
input <- read.dta13(file_name)
assign(obj_name, value = input)
}
# Merge the files into a single object
#..................................................
df2015 <- rbind (at2015y, be2015y, bg2015y, ch2015y, cy2015y, cz2015y, dk2015y, ee2015y, ee2015y, es2015y, fi2015y,
fr2015y, gr2015y, hr2015y, hu2015y, ie2015y, is2015y, it2015y, lt2015y, lu2015y, lv2015y, mt2015y,
nl2015y, no2015y, pl2015y, pl2015y, pt2015y, ro2015y, se2015y, si2015y, sk2015y, uk2015y)
有谁知道如何避免使用循环并缩短我的代码?
【问题讨论】:
标签: r