我正在尝试编写一个简单的for loop
来读取多个.csv
文件。我看过list.files(pattern="data.*csv")
,但我认为这不能解决我的问题。
我有一个指向如下数据的链接;
read.csv("C:/Users/user/Desktop/data/Year1/beer/beer.csv")
我有很多年的数据,我正在尝试写一些东西,将Year1
更改为(for i in 1:15)...
第二,我有很多产品,现在我只想导入beer
产品的所有年份的数据,所以我试图创建一个单独的产品向量,即products <- c("beer", "bread", "milk")
,我可以在以后加载。
产品文件夹的格式都相同,所以牛奶可能是C:/Users/user/Desktop/data/Year1/milk/milk.csv
。此外,所有年份的文件名都相同,因此,例如,第一年的milk.csv
在第七年也称为milk.csv
。
我可以粘贴我当前拥有的东西
答案 0 :(得分:2)
利用您先前在Loading Multiple Files into R at the same time with similar file names中发布的数据,这是为特定产品划分list.files()
或dir()
的结果的一种方法。
我们会将列表子集包含产品beer
或milk
的产品。
aFileList <- c("Year1/beer/beer.csv",
"Year1/blades/blades.csv",
"Year1/carbbev/carbbev.csv",
"Year1/cigets/cigets.csv",
"Year1/mayo/mayo.csv",
"Year1/milk/milk.csv",
"Year1/mustketc/mustketc.csv",
"Year2/beer/beer.csv",
"Year2/blades/blades.csv",
"Year2/carbbev/carbbev.csv",
"Year2/cigets/cigets.csv",
"Year2/mayo/mayo.csv",
"Year2/milk/milk.csv",
"Year2/mustketc/mustketc.csv")
aFileList[grep("beer|milk",aFileList)]
grep()
函数为输入向量的元素返回索引编号的向量,这些元素包含正则表达式中请求的标记,而这些正则表达式是grep()
的第一个参数。这用于子集文件名的原始向量。
...以及输出:
> aFileList[grep("beer|milk",aFileList)]
[1] "Year1/beer/beer.csv" "Year1/milk/milk.csv" "Year2/beer/beer.csv" "Year2/milk/milk.csv"
>
如果使用此技术,则根据我对Loading Multiple Files into R at the same time with similar file names的回答,可以使用lapply()
来读取文件,而无需进行for()
循环。
答案 1 :(得分:0)
有多种方法可以将一个文件夹中的多个CSV文件合并为一个。这里有一些想法...
setwd("C:/your_path_here/CSV Files/")
fnames <- list.files()
csv <- lapply(fnames, read.csv)
result <- do.call(rbind, csv)
filedir <- setwd("C:/your_path_here")
file_names <- dir(filedir)
your_data_frame <- do.call(rbind,lapply(file_names,read.csv))
filedir <- setwd("C:/your_path_here")
file_names <- dir(filedir)
your_data_frame <- do.call(rbind, lapply(file_names, read.csv, skip = 1, header = FALSE))
要将每个文件从多个文件夹放入一个文件夹,请尝试以下操作。...
xcopy *.ext destination /s
where ext identifies the type of file you want to copy, and destination where you want it copied to. For instance, to copy all of your *.docx files to D:\alldocx, type xcopy *.docx d:\alldocx /s.