我试图遍历我wd的所有子文件夹,列出他们的名字,打开' data.csv'在每个中,从该csv文件中提取第二个和最后一个值。
df看起来像这样:
Name_folder_1 2nd value Last value
Name_folder_2 2nd value Last value
Name_folder_3 2nd value Last value
现在,我设法列出子文件夹和每个文件(感谢这个帖子:read multiple text files from multiple folders)但是我很难实现(我猜测应该是什么)嵌套循环来读取并从csv文件中提取数据。
parent.folder <- "C:/Users/Desktop/test"
setwd(parent.folder)
sub.folders1 <- list.dirs(parent.folder, recursive = FALSE)
r.scripts <- file.path(sub.folders1)
files.v <- list()
for (j in seq_along(r.scripts)) {
files.v[j] <- dir(r.scripts[j],"data$")
}
任何提示都将不胜感激!
编辑:
我正在尝试下面详细介绍的解决方案,但是由于它运行顺利但不会产生任何结果,因此必定会丢失一些内容。这可能是非常愚蠢的事情,我是R的新手,学习曲线让我头晕目眩:p
lapply(files, function(f) {
dat <- fread(f) # faster
dat2 <- c(basename(dirname(f)), head(dat$time, 1), tail(dat$time, 1))
write.csv(dat2, file = "test.csv")
})
答案 0 :(得分:1)
不容易复制,但这是我的建议:
library(data.table)
files <- list.files("PARENTDIR", full.names = T, recursive = T, pattern = ".*.csv")
lapply(files, function(f) {
dat <- fread(f) # faster
# Do whatever, get the subfolder name for example
basename(dirname(f))
})
您可以简单地查看父目录中的所有CSV文件,并仍然可以获得相应的父文件夹。