James Holland
2011-Dec-03 04:51 UTC
[R] Reading multiple text files and then combining into a dataframe
I have a multiple text files, separated by a single space, that I need to combine into a single data.frame. Below is the track I'm on using list.files to capture the names of the files and then lapply with read.table. But I run into problems making a usable dataframe out of the data. #Creating example data in similar format to data I have sub <- rep(1,10) trial <- seq(1,10,1) size <- rep(3,10) shortest <- rep(444,10) startlab <- rep(444,10) endlab <- rep(444,10) startconf <- rep(444,10) endconf <- rep(444,10) steps <- sample(1:30,10) time <- sample(1:300,10) #creating example of text file and saving into a shared director with other txt files subject1 <- cbind(sub1,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time) write.table(subject1, "C:Folder/R/subject1.txt", sep=" ") #2nd example of same text file sub <- rep(2,10) trial <- seq(1,10,1) size <- rep(3,10) shortest <- rep(444,10) startlab <- rep(444,10) endlab <- rep(444,10) startconf <- rep(444,10) endconf <- rep(444,10) steps <- sample(1:30,10) time <- sample(1:300,10) subject1 <- cbind(sub1,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time) write.table(subject1, "C:Folder/R/subject2.txt", sep=" ") setwd("C:Folder/R/") #Getting list of file names file_name <- list.files(pattern="subject*") mydata <- lapply (file_name, read.table, sep=" ", header=T, row.names=NULL) Thank you, James [[alternative HTML version deleted]]
jim holtman
2011-Dec-03 12:22 UTC
[R] Reading multiple text files and then combining into a dataframe
Does this do it for you:> #Creating example data in similar format to data I have > sub <- rep(1,10) > trial <- seq(1,10,1) > size <- rep(3,10) > shortest <- rep(444,10) > startlab <- rep(444,10) > endlab <- rep(444,10) > startconf <- rep(444,10) > endconf <- rep(444,10) > steps <- sample(1:30,10) > time <- sample(1:300,10) > > #creating example of text file and saving into a shared director with other txt files > > subject1 <-+ cbind(sub,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time)> write.table(subject1, "/temp/subject1.txt", sep=" ") > > #2nd example of same text file > sub <- rep(2,10) > trial <- seq(1,10,1) > size <- rep(3,10) > shortest <- rep(444,10) > startlab <- rep(444,10) > endlab <- rep(444,10) > startconf <- rep(444,10) > endconf <- rep(444,10) > steps <- sample(1:30,10) > time <- sample(1:300,10) > > subject1 <-+ cbind(sub,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time)> write.table(subject1, "/temp/subject2.txt", sep=" ") > > > setwd("/temp") > > #Getting list of file names > file_name <- list.files(pattern="subject*") > > mydata <- lapply (file_name, read.table, sep=" ", header=T, row.names=NULL) > > # rbind to dataframe > mydf <- do.call(rbind, mydata) > > # or use the plyr package > require(plyr) > mydf.1 <- ldply(file_name, read.table, sep = ' ', header = TRUE, row.names = NULL) > > str(mydf)'data.frame': 20 obs. of 11 variables: $ row.names: chr "1" "2" "3" "4" ... $ sub : int 1 1 1 1 1 1 1 1 1 1 ... $ trial : int 1 2 3 4 5 6 7 8 9 10 ... $ size : int 3 3 3 3 3 3 3 3 3 3 ... $ shortest : int 444 444 444 444 444 444 444 444 444 444 ... $ startlab : int 444 444 444 444 444 444 444 444 444 444 ... $ endlab : int 444 444 444 444 444 444 444 444 444 444 ... $ startconf: int 444 444 444 444 444 444 444 444 444 444 ... $ endconf : int 444 444 444 444 444 444 444 444 444 444 ... $ steps : int 10 28 20 18 4 21 5 3 8 7 ... $ time : int 225 188 205 189 103 227 148 221 275 14 ...> str(mydf.1)'data.frame': 20 obs. of 11 variables: $ row.names: chr "1" "2" "3" "4" ... $ sub : int 1 1 1 1 1 1 1 1 1 1 ... $ trial : int 1 2 3 4 5 6 7 8 9 10 ... $ size : int 3 3 3 3 3 3 3 3 3 3 ... $ shortest : int 444 444 444 444 444 444 444 444 444 444 ... $ startlab : int 444 444 444 444 444 444 444 444 444 444 ... $ endlab : int 444 444 444 444 444 444 444 444 444 444 ... $ startconf: int 444 444 444 444 444 444 444 444 444 444 ... $ endconf : int 444 444 444 444 444 444 444 444 444 444 ... $ steps : int 10 28 20 18 4 21 5 3 8 7 ... $ time : int 225 188 205 189 103 227 148 221 275 14 ...>On Fri, Dec 2, 2011 at 11:51 PM, James Holland <holland.aggie at gmail.com> wrote:> I have a multiple text files, separated by a single space, that I need to > combine into a single data.frame. ?Below is the track I'm on using > list.files to capture the names of the files and then lapply with > read.table. ?But I run into problems making a usable dataframe out of the > data. > > > #Creating example data in similar format to data I have > sub <- rep(1,10) > trial <- seq(1,10,1) > size <- rep(3,10) > shortest <- rep(444,10) > startlab <- rep(444,10) > endlab <- rep(444,10) > startconf <- rep(444,10) > endconf <- rep(444,10) > steps <- sample(1:30,10) > time <- sample(1:300,10) > > #creating example of text file and saving into a shared director with other > txt files > > subject1 <- > cbind(sub1,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time) > write.table(subject1, "C:Folder/R/subject1.txt", sep=" ") > > #2nd example of same text file > sub <- rep(2,10) > trial <- seq(1,10,1) > size <- rep(3,10) > shortest <- rep(444,10) > startlab <- rep(444,10) > endlab <- rep(444,10) > startconf <- rep(444,10) > endconf <- rep(444,10) > steps <- sample(1:30,10) > time <- sample(1:300,10) > > subject1 <- > cbind(sub1,trial,size,shortest,startlab,endlab,startconf,endconf,steps,time) > write.table(subject1, "C:Folder/R/subject2.txt", sep=" ") > > > setwd("C:Folder/R/") > > #Getting list of file names > file_name <- list.files(pattern="subject*") > > mydata <- lapply (file_name, read.table, sep=" ", header=T, row.names=NULL) > > > > Thank you, > James > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.