Hello,
It doesn't seem very complicated.
First of all, for the function fun below to work, you need the data not
as strings of staes followed by a space followed by a broup number, but
in two columns vectors, a character vector of states and a vector of
groups. The vector of groups can be of class character, factor or
numeric. I've written a function to simulate such data.
makeData <- function(n, g = 3, size = 10){
res <- matrix(0, nrow = n, ncol = size)
gr <- sample(g, n, replace = TRUE)
for(i in seq_len(n))
res[i, ] <- sample(0:2, 10, replace = TRUE, prob = c(0.5, 0.25, 0.25))
res <- apply(res, 1, paste0, collapse = "")
data.frame(states = res, group = gr, stringsAsFactors = FALSE)
}
dat <- makeData(10)
# Now to sample from 'dat', by group.
fun <- function(x){
f <- function(y){
idx <- sample(nrow(y), nrow(y), replace = TRUE)
y[idx, ]
}
res <- do.call(rbind, lapply(split(x, x[, 2]), f))
rownames(res) <- seq_len(nrow(res))
res
}
fun(dat)
Hope this helps,
Rui Barradas
Em 14-03-2013 10:25, Simone Santoro escreveu:>
> Hi all,
>
> I am working with a capture-recapture analyses and my data set consists of
a
> typical set of encounter histories.
> Thus, for each individual I have a string (same length for all the
> individuals) consisting of 0 (not seen) and other numbers (seen in state
> "1", seen in state "2", etc. where state may refer to
breeding, nesting,
> feeding, etc.).
> At the end of each string I have a last value that refers to the group
> (according to sex, age, sex*age, whatever). State and group refer to
> different classifications.
> Hence my original data set would be (by the way I can modify it to make
> things easier):
> 0001002002 1; (individual of group 1, first captured in state "1! at
> occasion 4th, not captured at occasion 5th and 6th, captured at 7th in
state
> 2...etc.)
> 1100222101 1;
> 0000020010 3;
> 0010101022 2;
> ...
>
> Suppose I have 5000 strings divided in x individuals of group 1, y
> individuals of group 2, ... z individuals of group "n".
> I need to bootstrap this data set to get a new data set of the same length
> (resampling with replacement) and where the number of individuals of each
> group is maintained the same.
>
> Does anyone have an idea on how to do it?
> Thanks in advance for any help
>
> Simone
>
>
>
>
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/Bootstrap-encounter-histories-data-tp4661300.html
> Sent from the R help mailing list archive at Nabble.com.
>
>
> [[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.
>