2015-12-01 82 views
-1

我在一个文件夹中有很多.csv文件。我想通过命令行中的R脚本逐个自动逐个获取每个.csv文件的分档结果,并逐个将所有文件的结果写入result.csv文件。例如,我有file01.csv,file02.csv,file03.csv,file04.csv,file05.csv。我想让第一个R脚本读取/执行file01.csv并将结果写入result.csv文件,然后读取/执行file02.csv并将结果写入result.csv,再次读取/执行file03.csv并将结果写入结果.csv等。这就像所有文件的循环,我想从命令行执行R脚本。R脚本从命令行读取/执行许多.csv文件并将所有结果写入.csv文件

这里是我的起点 - [R脚本:

data <- read.table("file01.csv",sep=",",header = T) 

df.train <- data.frame(data) 

library(smbinning) # Install if necessary 

<p>#Analysis by dwell:</p> 

df.train_amp <- 
rbind(df.train) 

res.bin <- smbinning(df=df.train_amp, y="cvflg",x="dwell") 

res.bin  #Result 

<p># Analysis by pv</p> 
df.train_amp <- 
rbind(df.train) 

res.bin <- smbinning(df=df.train_amp, y="cvflg",x="pv") 

res.bin #Result 

任何建议和支持将高度赞赏。

谢谢

回答

1

首先,您需要从您的目录中读取文件。将所有源文件放在同一个源目录中。我假设你的CSV文件都具有相同的形状。另外,我对这里的标题无所作为。

directory <- "C://temp" ## for example 
filenames <- list.files(directory, pattern = "*.csv", full.names = TRUE) 
# If you need full paths then change the above to 
# filenames <- list.files(directory, pattern = "*.csv", full.names = TRUE) 

bigDF <- data.frame() 
for (f in 1:length(filenames)){ 
    tmp <- read.csv(paste(filenames[f]), stringsAsFactors = FALSE) 
    bigDF <- rbind(bigDF, tmp) 
} 

这将在tmp添加行bigDF的每次读,并应导致最终bigDF

要将df写入csv在R中也是微不足道的。 。任何像

# Write to a file, suppress row names 
write.csv(bigDF, "myData.csv", row.names=FALSE) 

# Same, except that instead of "NA", output blank cells 
write.csv(bigDF, "myData.csv", row.names=FALSE, na="") 

# Use tabs, suppress row names and column names 
write.table(bigDF, "myData.csv", sep="\t", row.names=FALSE, col.names=FALSE) 
+0

尊敬的Shawn Mehan, 非常感谢,我的解释不够,所以我修改了这个问题,我想要的是,例如,我有file01.csv ,file02.csv,file03.csv,file04.csv,file05.csv,我希望第一个R脚本读取/执行file01.csv并将结果写入result.csv文件,然后读取/执行file02.csv并写入结果到result.csv中,再次读取/执行file03.csv并将结果写入result.csv等等,这就像是所有文件的循环,我想从命令行执行R脚本。 – Tofazzal

+0

是的,我想从命令行执行此操作,感谢您对我的了解 – Tofazzal

+0

谢谢@RichardScriven。这样做,除了需要''result.csv'替代'bigDF'之外,您可以编写该脚本并从中运行命令行,你可以看看http://stackoverflow.com/questions/18306362/run-r-script-from-command-line。只要将这些内容保存到文件中并通过R运行该文件即可。我错过了什么? –

0

最后我发现上述问题可以如下解决:

库(smbinning)#Install如有必要

文件< - list.files(模式=”的.csv “)##与您的文件夹中的所有文件的名称创建一个矢量

分割点< - 代表(0,长度(文件))

为(我在1:长度(文件)){

数据< - read.csv(文件[I],标题= T)

df.train < - data.frame(数据)

DF。 train_amp < - rbind(df.train,df.train,df.train,df.train,df.train,df.train,df.train,df.train)#只是乘以数据

割点[I ] < - smbinning(df = df.train_amp,y =“cvflg”,x =“dwell”)#smbinning is calculated here

}

结果< - cbind(文件,割点)#农产品详情结果

结果< - cbind(文件,带)#农产品带导致

write.csv(结果,“result_dwell。csv“)#将结果写入csv文件

相关问题