我正在运行一个连续生成单个.csv文件的计算机模型。每个文件都有唯一的文件名称,对应于地理位置和实验处理。每个文件都包含相同的数据。我想将这些文件合并成一个可以在R中进行统计分析的数据框。如何将标识列添加到批次的现有文件?
问题是,单个文件不包含标识符来表示它们代表的位置或处理方式。没有办法让计算机模型添加这些信息(!?!)。
因此,我想获取目录中的所有.csv文件,将列添加到单个文件中,以便根据文件名识别它们,并将它们合并到一个数据框中。我一直在摆弄for循环两天,不知道如何做到这一点。
我重复的例子的版本:
这里是假设性的文件。
Site1.Treatment <- data.frame(Data1 = seq(1000,5000, length.out=10), Data2 = seq(10,30, length.out=10))
Site1.NoTreatment <- data.frame(Data1 = seq(2000,3000, length.out=10), Data2 = seq(10,30, length.out=10))
可以创建具有可能的文件标题的数据帧。然后
data <- data.frame(expand.grid(Site = c("Site1","Site2","Site3"), Treatment = c("Treatment","NoTreatment")))
data$extension <- "csv"
data$filename <- as.factor(interaction(data$Site, data$Treatment, data$extension))
标识符添加到数据帧,所以它看起来是这样的。
Site1.Treatment$Site <- "Site1"
Site1.Treatment$Treatment <- "Treatment"
Site1.NoTreatment$Site <- "Site1"
Site1.NoTreatment$Treatment <- "NoTreatment"
然后可以组合数据帧。
All.Data <- rbind (Site1.Treatment, Site1.NoTreatment)
我真诚感谢您的帮助!
什么是文件名的模式? – nicola
它不清楚你在哪里找到问题:机械或设计方面。您可以识别一个分隔csv数据集的列,比如说“Site”,并将它添加到每个数据集中,然后从csv中读取它们。您可以轻松地在读取csv时创建数据框,然后将所有dfs标准的列与每个df的特定值相加。这些是矢量操作,所以不需要任何for循环。这是你想要做的吗? –