[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