我有一个数据集列表。每个数据集包含一个月的一些数据。数据跨度很多年,因此我每年有12个数据集。这些数据最初是一堆Excel文件。我有进口的所有文件,以前转换为.csv,以下this advice,即:在数据框列表中动态创建一个新的数据框列
datalist <- list()
files <- list.files(pattern="\\.csv$")
for(file in files) {
stem <- gsub("\\.csv$","",file)
datalist[[stem]] <- read.csv(file)
}
所以我结束了一个名为datalist
列表包含我的所有数据集。
现在,我的问题是只有文件名包含实际的月份和年份的每个部分的数据被收集,所以我想从每个数据集名称中获取名称和年份,并将它们归入两个新列数据框:“年”和“月”。
所有的文件名,这是我一直的数据框名称,按照这个结构:个月] _ [年] _ [...其它文本],例如 “August_2012_foo_bar”。所以我想我会用正则表达式来抓取当年的第一个月。我的代码存根是:
for(dataset in names(datalists)) {
name <- dataset
month <- strapply(name,"^([^_]*).*$")
...?
}
正则表达式"^([^_]*).*$"
争夺下划线,即前一个月无论发生什么事。当我需要将抓取的月份分配到数据集的新列时,我遇到困难。我已经尝试了assign
和cbind
,但都没有运气。
最后,我想垂直合并所有这些数据集为一个。
感谢您的帮助!
完美!非常感谢!我不知道我可以直接将数据框传递给'strapply',这就是为什么我尝试了第二个循环,但与数据框名称搞砸了! – Wilco