【发布时间】:2019-06-03 09:08:54
【问题描述】:
使用ldply(包“plyr”)从一个文件夹中导入多个csv文件:标题信仰,以及如何为多个文件夹做到这一点?
设置:
- 台式机:装有 iOS 10.13.6 的 MacBook Pro(2011 年初)
- 软件版本:R 版本 3.5.1 (2018-07-02) -- “羽毛喷雾”
- R 工作室:版本 1.1.456
我想从特定文件夹中导入多个 csv 文件并将它们合并到一个包含 5 列的文件中:Variable1/Variable2/file_name/experiment_nb/pulse_nb 我已经设法从同一个data.frame中的StackOverflow中以前的类似问题从同一个文件夹中导入所有文件,但是,我不确定如何为不同的文件夹执行此操作以及之后每个文件的标题的信念合并,.由于文件太大而无法手动处理(每个文件 200 000 行),我想确保没有任何错误会导致所有后续分析失败,例如每个 csv 文件数据之前的标题行进口的
csv 看起来像这样:“20190409-0001_002.csv”,带有日期,后跟示例中的实验名称 (0001),以及脉冲数 (002)
#setting package and directory
library(plyr)
library(stringr)
setwd("/Users/macbook/Desktop/Project_Folder/File_folder1")
#Creating a list of all the filenames:
filenames <- list.files(path = "/Users/macbook/Desktop/Project_Folder/File_folder1")
#creating a function to read csv and in the same time adding an additional column with the name of the file
read_csv_filename <- function(filename)
{
ret <- read.csv(filename, header=TRUE, sep=",")
ret$Source <- filename #EDIT
ret
}
#importing
import <- ldply(filenames, read_csv_filename)
#making a copy of import
data<-import
#modifying the file name so it removes ".csv" and change the header
data$Source<-str_sub(data$Source, end=-5)
data[1,3]<-"date_expnb_pulsenb"
t<-substr(data[1,3],1,3)
head(data, n=10)
#create a column with the experiment number, extracted from the file name
data$expnb<-substr(data$Source, 10, 13)
data$expnb<-as.numeric(data$expnb)
head(data, n=10)
tail(data, n=10)
1° 现在我需要设法在同一个文件中导入所有其他文件夹,我最终可以手动完成,因为文件夹的数量是手动可行的(9-10),但我正在考虑为此编写代码以及用于大量实验的未来实验。怎么做 ?首先列出所有文件夹,然后列出这些文件夹中的所有文件,然后将它们重新组合到一个列表文件中?这对 list.files 可行吗? 文件夹名称将如下所示:“20190409-0001”
2° 上面代码 (head(data, n=10)) 的结果如下所示:
> head(data, n=10)
Time Channel.A Source pulsenb expnb
1 (us) (A) expnb_pulsenb NA NA
2 -20.00200030 -0.29219970 20190409-0001_002 2 1
3 -20.00100030 -0.29219970 20190409-0001_002 2 1
和
> tail(data, n=10)
Time Channel.A Source pulsenb expnb
20800511 179.99199405 -0.81815930 20190409-0001_105 105 1
20800512 179.99299405 -0.81815930 20190409-0001_105 105 1
我想在现在的大列表上运行广泛的数据分析,我想知道如何检查在它们中间我没有一些文件标题行。与 csv 文件中的标题相同,ldply 函数是否已经考虑了标题?所有文件头会在“导入”数据框中的单独行中吗?如何检查? (不幸的是,每个文件中大约有 200 行 XXX 行,所以我无法真正手动检查标题)。
我希望我已经添加了所有必需的详细信息并以正确的格式提出问题,因为这是我第一次在这里发帖:)
提前感谢你们的帮助!
【问题讨论】:
-
有没有办法确定文件夹的名称?它们是否共享其他文件夹没有的通用字符串/名称?或者他们的名字可以通过程序来构造?
-
进一步:您在一个“问题”中提出了很多问题。也许最好将这篇文章分成不同的“单一”问题,每个问题都有自己的可重复示例。
标签: r