我有大量的CVS文件,需要通过删除特定列中不适用的所有行来整理。因此,我想知道是否有可能编写一些可以满足以下条件的R代码,而不是在Excel中手动打开每个代码:
我可以对单个文件执行上述步骤,但是我对扩展自己的代码以对多个CSV文件执行相同的操作不太满意。
如果我一次处理一个文件,这是我目前拥有的:
setwd('#folderlocation')
df <- read.csv("#filename",
header=TRUE)
working <- df[!is.na(df$Error),]
working <- sapply(working, as.character)
working[is.na(working)] <- ""
library(xlsx)
write.xlsx(working,"test.xlsx")
我已设法使用以下代码导入文件列表:
temp=list.files(pattern=".CSV")
for(i in 1:length(temp)){assign(temp[i],read.csv(temp[i]))}
但对于我从那里继续前进的方式感到困惑。
我得到的最终结果是每个文件,一旦使用代码进行处理,“错误”列中将没有任何空白行,并将被另存为Excel文件。 我决不想要合并数据帧,因为试图解开哪些数据属于哪个文件会太混乱。
感谢您的帮助:-)
答案 0 :(得分:0)
您的Rscript myscript.R:
library(xlsx)
args = commandArgs(trailingOnly=TRUE)
df <- read.csv(args[1], header=TRUE)
working <- df[!is.na(df$Error),]
working <- sapply(working, as.character)
working[is.na(working)] <- ""
write.xlsx(working,paste(args[1], "test.xlsx", sep="_")
现在,如果您正在运行Unix系统,则可以打开终端并运行以下命令来为文件夹.CSV
中所有以“ /folder/with/input/data
”结尾的文件启动for循环:
bash
cd /folder/with/input/data
for FILE in *.CSV
do
Rscript myscript.R $FILE
done