导入多个csv文件,操作(过滤列并执行摘要)并将结果导出到一个txt文件中

时间:2017-03-22 06:53:04

标签: r csv

我有代码在这里我试图操纵我的文件,以便一列只有1而不是1和0.我有多个文件和多列,但无论过滤一列只获得1和保持其他一切都应该很容易做到。我无法使用d%>%过滤器(CreaseUp> 0)来使用dplyr函数。也许有另一个lapply命令可以工作?其他一切都有效。我可以将文件汇总并输出到一个文件中。我非常接近这一点。请帮忙。

setwd("~/OneDrive/School/R/R Workspace/2016_Coda-Brundage/cb")
#assuming your working directory is the folder with the CSVs
f = list.files(pattern="*.csv")
for (i in 1:length(f)) assign(f[i], read.csv(f[i]))
d<-lapply(f, read.csv)
f.1<-d %>% 
    filter(CreaseUp>0)
w<-lapply(f.1, summary)
write.table(w, file = "SeedScan_results1.csv", sep = ",", col.names = NA,
        qmethod = "double")

最终剧本。我不得不在办公室打开.txt文件,将标题和数字之间的空格更改为逗号,然后从文本创建表格。从那里我可以把它放在excel中并从这套装置中拉出我的手段。

setwd("~/OneDrive")
#assuming your working directory is the folder with the CSVs
f=list.files(pattern="*.csv")
library(dplyr)
sink("SeedScan_results1.txt")
for (i in 1:length(f)){
df=assign(f[i], read.csv(f[i]))
df=filter(df, CreaseUp>0)
print(lapply(df, summary))
}
sink(NULL)

1 个答案:

答案 0 :(得分:1)

d似乎是数据框列表,而不是数据框,因此dplyr无法处理它。此外,那个循环现在在做什么?为什么不把读(也可能是过滤)放在循环中?

alldfs = NULL
for (i in f){
    df = read.csv(i)
    df = filter(df, CreaseUp>0)
    alldfs = bind_rows(alldfs, df)
}
# print summary etc.

编辑 - 如果要在循环中打印摘要:

sink("SeedScan_results1.txt")
for (i in f){
    df = read.csv(i)
    df = filter(df, CreaseUp>0)
    print(lapply(df, summary))
}
sink(NULL)

如果要在循环中移动appendsink标志可能会有所帮助。