[R] Expand duplicated observations

Simon Blomberg s.blomberg1 at uq.edu.au
Wed Jun 6 03:44:39 CEST 2007


Does this do what you want?

dat <- c(NA, 0, 3.2, 4)

fn <- function (x) {
z <- round(x)
if (is.na(x) | x <= 1) z else rep(z, each=z)
}

unlist(sapply(dat, fn))

[1] NA  0  3  3  3  4  4  4  4

HTH,

Simon.

On Wed, 2007-06-06 at 01:54 +0100, M. P. Papadatos wrote:
> Dear all,
> 
> I am trying to  expand duplicated observations. I need to replace  
> each observation in the dataset with n copies of the observation,  
> where n is equal to the required expression rounded to the nearest  
> integer. If the expression is less than 1 or equal to missing, it is  
> interpreted as if it were 1, and the observation is retained but not  
> duplicated.
> 
> Example
> 
> From
> c(1,2,3)
> 
> To
> c(1,2,2,3,3,3)
> 
> Thank you in advance.
> 
> Best wishes,
> Martin
> 
> 
> --Apple-Mail-4-920612661--
> 
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
-- 
Simon Blomberg, BSc (Hons), PhD, MAppStat. 
Lecturer and Consultant Statistician 
Faculty of Biological and Chemical Sciences 
The University of Queensland 
St. Lucia Queensland 4072 
Australia

Room 320, Goddard Building (8)
T: +61 7 3365 2506 
email: S.Blomberg1_at_uq.edu.au 

The combination of some data and an aching desire for 
an answer does not ensure that a reasonable answer can 
be extracted from a given body of data. - John Tukey.



More information about the R-help mailing list