我有一个包含许多文件夹的文件夹,每个文件夹包含一个csv文件。我想根据CN将每个文件分割成自己的文件夹。这是文件的位置:
home -> folder -> f_5324 -> f_5324.csv
-> f_5674 -> f_5674.csv
-> f_8769 -> f_8769.csv and so on
我想编写一个代码,将第一个文件夹(f_5324)读取csv文件,然后拆分该文件并保存在该文件夹(f_5324)中,然后将第二个文件夹(f_5674)读取csv文件,然后拆分并保存在该文件夹中( f_5674),然后对所有文件夹执行相同的操作。 这是我在R中的代码:-
dir <- "/home/folder"
my_dirs <- list.dirs(dir, recursive = FALSE)
for(i in my_dirs){
a <- list.files(path = i, full.names = TRUE, recursive = TRUE)
df <- read.csv(a)
a0 <- df[df$CN=="cn=0",]
a1 <- df[df$CN=="cn=1",]
a3 <- df[df$CN=="cn=3",]
a4 <- df[df$CN=="cn=4",]
write.csv(a0,"cn0.csv")
write.csv(a1,"cn1.csv")
write.csv(a3,"cn3.csv")
write.csv(a4,"cn4.csv")
}
我正在努力,但无法正常工作,它会拆分文件,但会为cn0,cn1,cn3,cn4创建一个文件并覆盖所有结果。请告诉我如何将路径传递到每个文件夹,并获取该文件夹中所有csv文件的单独结果。 帮助将不胜感激
答案 0 :(得分:0)
使用-
dir <- "/home/folder"
my_dirs <- list.dirs(dir, recursive = FALSE)
for(i in my_dirs){
a <- list.files(path = i, full.names = TRUE, recursive = TRUE)
df <- read.csv(a)
a0 <- df[df$CN=="cn=0",]
a1 <- df[df$CN=="cn=1",]
a3 <- df[df$CN=="cn=3",]
a4 <- df[df$CN=="cn=4",]
write.csv(a0,paste(i,"cn0.csv",sep="/"))
write.csv(a1,paste(i,"cn1.csv",sep="/"))
write.csv(a3,paste(i,"cn3.csv",sep="/"))
write.csv(a4,paste(i,"cn4.csv",sep="/"))
}
说明
在最初的实现中,write.csv(a0,"cn0.csv")
意味着您正在将名为cn0.csv
的csv文件写入当前的工作目录。
下次循环出现时,它将一次又一次地覆盖现有文件。
为避免这种情况,您需要为每次csv写入正确指定目录,方法是将其修改为write.csv(a0,paste(i,"cn0.csv",sep="/"))
,以填充正确的目标目录。