Объедините несколько файлов с одним заголовком - PullRequest
0 голосов
/ 20 ноября 2010

У меня есть пять текстовых файлов, которые создаются программой 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 ]

1 голос
/ 21 ноября 2010

Это звучит как неправильный импорт. Вы должны предоставить пример данных. В любом случае, вместо использования read.table("some.file", header=TRUE, sep=";"), попробуйте read.csv2, поскольку в качестве аргументов по умолчанию используются header=TRUE и sep=";".

И вместо rbind, почему бы вам не использовать merge?

0 голосов
/ 21 ноября 2010

продолжение работы над 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 = "[некоторое регулярное выражение]"), тогда вы могли бы начать этот путь ...

0 голосов
/ 20 ноября 2010

Да; Существует проблема с вашими входными данными, не соответствующими вашей функции чтения, и вы читаете данные с неверным аргументом 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 = ";" препятствовал тому, чтобы разделение пробела было распознано, и в ведущей строке было что-то, из-за чего ваши заголовки не преобразовывались в имена столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...