将多个文件与一个标题组合在一起

时间:2010-11-20 18:06:07

标签: r

我有五个由R程序生成的文本文件(每个文件都有标题),这些文件要组合成一个文件。我使用rbind组合了它们,我的问题是当我将它们组合起来时,结果输出在每个文件的末尾附加了标题,例如, 如果标题是假设的

Combine Resultant file
A  B  C  D
1  3  5  7    ------------> Text file1
6  9  0  3
A  B  C  D
1  3  6  7    ------------> Text file 2
5  7  8  3
and so on....

而不是我希望输出文件在第1行只有一个标题 所以该文件应如下所示:

Combine Resultant file
A  B  C  D
1  3  5  7    ------------> Text file1
6  9  0  3
1  3  6  7    ------------> Text file 2
5  7  8  3
and so on....

谁能告诉我怎么做? 我的代码是:

S1 <- read.table("C:/Simulation_Results/sim_1_200.txt",sep=";",header= TRUE);
S2 <- read.table("C:/Simulation_Results/sim_201_400.txt", sep=";",header= TRUE);
S3 <- read.table("C:/Simulation_Results/sim_401_600_b.txt", sep=";",header= TRUE);
S4 <- read.table("C:/Simulation_Results/sim_601_800.txt", sep=";",header= TRUE);
S5 <- read.table("C:/Simulation_Results/sim_901_1000.txt",sep=";",header= TRUE);
S6 <- read.table("C:/Simulation_Results/simulations_801_900.txt",sep=";",header= TRUE);
options(max.print=28.5E6);
S7 <- rbind(S1,S2,S3,S4,S5,S6)
write.table(S7, file="C:/Simulation_Results/simulation_1_1000.txt", sep=";", 
            row.names=TRUE, col.names=FALSE, quote = FALSE);

谢谢!

3 个答案:

答案 0 :(得分:1)

这听起来像是一个不正确的导入。您应该提供示例数据。无论如何,不​​要使用read.table("some.file", header=TRUE, sep=";"),而是尝试read.csv2,因为它有header=TRUEsep=";"作为默认参数。

而是rbind,为什么不使用merge

答案 1 :(得分:0)

是;您的输入数据与读取功能不匹配存在问题,并且您正在使用错误的sep参数读取数据。我认为您需要跳过一行才能达到标题所在的位置。试试这个:

S1 <- read.table("C:/Simulation_Results/sim_1_200.txt", header= TRUE, skip=1)
S2 <- read.table("C:/Simulation_Results/sim_201_400.txt",  skip=1, header= TRUE)
S3 <- read.table("C:/Simulation_Results/sim_401_600_b.txt", skip=1 , header= TRUE)
S4 <- read.table("C:/Simulation_Results/sim_601_800.txt", skip=1, header= TRUE)
S5 <- read.table("C:/Simulation_Results/sim_901_1000.txt", skip=1 , header= TRUE)
S6 <- read.table("C:/Simulation_Results/simulations_801_900.txt", skip=1, header= TRUE)

然后像以前一样继续。 sep =“;”阻止了空白区域被识别,并且在引导线中有一些东西导致您的标题不能转换为列名。

答案 2 :(得分:0)

跟进DWin:怎么样

startvals <- c(1,201,401,601,801,901)
endvals   <- c(startvals[-1]-1,1000)
fns <- paste("C:/Simulation_Results/",startvals,"_",endvals,".txt",sep="")
## I'm assuming for the moment that your S6 file is *not* named differently from the others
S <- lapply(fns, read.csv2, skip=1)
S_comb <- do.call(rbind,S)

如果您的模拟文件以特定方式命名,以便您可以使用list.files(pattern =“[some regular expression]”)识别它们,那么您可以这样开始......