[R] How to extract sets of rows (not sorted) from text file in R, do some methods on these rows, save the result in another text file, then pick others set of rows and do the same

arun smartpink111 at yahoo.com
Tue Nov 19 16:34:01 CET 2013



Hi,
You may need ?split(), or ?aggregate() or ?ddply() from library(plyr)

dat1 <- read.table(tex="1 2 4 7 8 9
1 4 5 8 9
1 4 5 6 9
2 3 4 8
3 6 7 8
1 5 6 9
2 5 7 9",header=FALSE,sep="",fill=TRUE) 
##

 res1 <- do.call(rbind,lapply(split(dat1,dat1[,1]),function(x) c(V1=x[1,1],colSums(x[,-1],na.rm=TRUE))))
 write.table(res1,file="new.txt",row.names=FALSE,quote=FALSE)

#or
res2 <- with(dat1,aggregate(cbind(V2,V3,V4,V5,V6),list(V1=V1),sum,na.rm=TRUE))


#or
library(plyr)
res3 <- ddply(dat1,.(V1),colwise(sum,na.rm=TRUE))

A.K.


Hi, 
in a text file like 
1 2 4 7 8 9 
1 4 5 8 9 
1 4 5 6 9 
2 3 4 8 
3 6 7 8 
1 5 6 9 
2 5 7 9 
And so on 

where the first column represents group's number 

data <- read.table("in.txt") 

## first: 
       - select rows that strat with one (check first column), apply
methods only on thes rows (expect for the first column in each line); 

       - save the result in another text file namely new.txt 

## second: 
       - do the same for these rows start with with two 

       - save the result in new.txt after the prevous result 
And so on 


I have 9000 lines and around 100 groups (first column). 



for (i in 1:9000 ) { 

newdata <- data[ , which(data$V1 =='1')] 

- apply methods 
- save the result 
} 


Thanks for any help



More information about the R-help mailing list