[R] extract data

Rui Barradas rui1174 at sapo.pt
Wed Apr 4 23:46:20 CEST 2012


Hello,


Roslina Zakaria wrote
> 
> HI,
> 
> 
> 
> I would like to extract data in a specific way.  For example, the rainfall
> data
> 
> 
> 
> 0,0,1.5,0,0, 3,1,2.5,0,0,0,0, 2.3,0,0,0, 2.1,1.4,0,0,0, 3,2,1,0,0,0...
> 
> 
> 
> data_1: 1.5, 2.3               ( a single nonzero data between zeros data)
> 
> data_2: 3.1, 2.5, 2.1,1.4   ( two nonzero data between zeros data)
> 
> data_3: 3,1,2.5, 3,2,1       ( three nonzero data between zeros data)
> 
> 
> 
> 
> Thank you so much for any help given.
> 
> 
> 
> Roslina
> 
> 
> 	[[alternative HTML version deleted]]
> 
> 
> ______________________________________________
> R-help@ 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.
> 


Your data_2 is wrong, not on the given vector.
Anyway, try this,


x <- c(0,0,1.5,0,0, 3,1,2.5,0,0,0,0, 2.3,0,0,0, 2.1,1.4,0,0,0, 3,2,1,0,0,0)

f.runs <- function(x, run){
	z <- rle(x != 0)
	zz <- cumsum(z$lengths)
	i <- cbind(zz[z$values & z$lengths == run] - (run - 1), zz[z$values &
z$lengths == run])
	apply(i, 1, function(j) x[ j[1]:j[2] ])
}

f.runs(x, 1)
f.runs(x, 2)
f.runs(x, 3)


Hope this helps,

Rui Barradas


--
View this message in context: http://r.789695.n4.nabble.com/extract-data-tp4533176p4533288.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list