R中是否有办法从文件名中定义对象?
我从许多具有相同结构的年度文件中导入数据(每月一列,每天一行)。这些文件中的每一个都按照以下方案命名:“Station_YYYY.txt”,其中YYYY是年份的编号(例如,1985年)。
我必须合并这些数据集,这样我在融合之前需要的是为“Station”添加一列,为“year”添加一列。
答案 0 :(得分:1)
如果我理解你的问题是正确的 你做了类似
的事情a <- "Station_YYYY.txt"
dat<-read.csv(a,OTHER OPTIONS)
只需追加这样的电台和年份:
dat$station<-strsplit(a,"[._]")[[1]][1]
dat$year<-strsplit(a,"[._]")[[1]][2]
答案 1 :(得分:0)
另一种方法是做几个简单的循环...
要使以下工作正常,请确保您的本地环境为空,因为我们将搜索“_”作为文件名
setwd('') # direct R to where the files are stored
rm(list=ls())
files <- list.files()
for(file in files){
name <- paste(file)
name <- assign(name, read.csv(file))
}
data_sets <- grep('_', ls(), value = T)
allData <- data.frame()
for(i in data_sets){
dat <- get(i)
station_end <- data.frame(str_locate(i, '_'))$start - 1
year_end <- data.frame(str_locate(i, '_'))$end + 4
dat$station <- str_sub(i, 1, station_end)
dat$year <- str_sub(i, station_end + 2, year_end)
allData <- rbind(allData, dat)
}
allData