在R中有從文件名定義對象的方法嗎?從文件名中定義對象
我從許多具有相同結構(每月一列,每天一行)的年度文件導入數據。這些文件中的每一個都按照此方案命名:「Station_YYYY.txt」,其中YYYY是年份數(例如1985)。
我必須合併這些數據集,所以我需要融合前需要爲「站」添加一列,爲「年」添加一列。
在R中有從文件名定義對象的方法嗎?從文件名中定義對象
我從許多具有相同結構(每月一列,每天一行)的年度文件導入數據。這些文件中的每一個都按照此方案命名:「Station_YYYY.txt」,其中YYYY是年份數(例如1985)。
我必須合併這些數據集,所以我需要融合前需要爲「站」添加一列,爲「年」添加一列。
如果我明白你的問題correctry 你這樣做
a <- "Station_YYYY.txt"
dat<-read.csv(a,OTHER OPTIONS)
只需追加站和今年這樣的:
dat$station<-strsplit(a,"[._]")[[1]][1]
dat$year<-strsplit(a,"[._]")[[1]][2]
另一種方式是做幾個簡單的循環...
對於以下工作,請確保您的本地環境爲空,因爲我們將搜索'_'作爲文件名稱
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