我在文件夹中有很多.csv文件。我希望通过命令行中的R脚本自动从每个.csv文件中获取binning结果,并逐个将所有文件的结果写入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脚本:
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
任何建议和支持都将受到高度赞赏。
感谢
答案 0 :(得分: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)
答案 1 :(得分:0)
最后我发现上面的问题可以解决如下:
library(smbinning)#Install(如有必要)。
files&lt; - list.files(pattern =&#34; .csv&#34;)##创建一个包含文件夹中所有文件名的向量
cutpoint&lt; - rep(0,length(files))
for(i in 1:length(files)){
data&lt; - read.csv(files [i],header = T)
df.train&lt; - data.frame(data)
df.train_amp&lt; - rbind(df.train,df.train,df.train,df.train,df.train,df.train,df.train,df.train)#只需乘以数据< / p>
cutpoint [i]&lt; - smbinning(df = df.train_amp,y =&#34; cvflg&#34;,x =&#34; dwell&#34;)#smbinning在这里计算
}
结果&lt; - cbind(文件,波段)#生成波段结果
write.csv(结果,&#34; result_dwell.csv&#34;)#将结果写入csv文件