2014-02-28 45 views
1

在R中有從文件名定義對象的方法嗎?從文件名中定義對象

我從許多具有相同結構(每月一列,每天一行)的年度文件導入數據。這些文件中的每一個都按照此方案命名:「Station_YYYY.txt」,其中YYYY是年份數(例如1985)。

我必須合併這些數據集,所以我需要融合前需要爲「站」添加一列,爲「年」添加一列。

回答

1

如果我明白你的問題correctry 你這樣做

a <- "Station_YYYY.txt" 
dat<-read.csv(a,OTHER OPTIONS) 

只需追加站和今年這樣的:

dat$station<-strsplit(a,"[._]")[[1]][1] 
dat$year<-strsplit(a,"[._]")[[1]][2] 
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