2015-12-01 115 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文件

相關問題