amostras aleatorias de um dataframe

Caros, Boa tarde,Alguem tem alguma dica para fazer amostras aleatorias de um conjunto de dados agrupado por parcela? Segue um #RCMR de exemplo dados <- data.frame(parcela = rep(1:5,each=5), obs=rep(1:5,5), y=rnorm(25), z=rnorm(25)) dados a idéia é que sejam retiradas amostras aleatorias deste conjunto. Segue um exemplo de um código sugerido pelo Ivan, valeu Ivan amostras <- list() for(i in 1:5){ amostras[[i]] <- apply(subset(dados,parcela==i),2,function(x) sample(x,3,replace=F)) } amostras tmp <- as.data.frame(rbind(amostras[[1]],amostras[[2]],amostras[[3]],amostras[[4]],amostras[[5]])) tmp #Problema aqui é inserir uma a uma. Neste caso tenho cinco parcelas daí fica tranquilo mas a base que estou usando tem mais de 9mil, enfim Grande abraço e bom fds a todos ==================================== Samuel P. C. Carvalho Mestre em Ciências Florestais [UFLA] Doutorando em Recursos Florestais [ESALQ/USP] =============================================

Organizar idéias: Primeiro fazer um split() da seguência 1:nrow(da) por nível de parcela. Dentro de cada vetor fazer um sample() dos números. Concatenar todos os vetores e usá-lo para acessar o data.frame. Tudo sem um for(). Segue a versão mais simples: dados <- data.frame(parcela=rep(1:5, each=5), obs=rep(1:5,5), y=rnorm(25), z=rnorm(25)) id <- seq_len(nrow(dados)) id id.spl <- split(id, f=dados$parcela) id.spl id.sam <- lapply(id.spl, sample, size=5, replace=TRUE) id.sam id.sam <- do.call(c, id.sam) id.sam dados2 <- dados[id.sam,] dados2 À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Samuel, Tente também: dados[unlist(with(dados, tapply(seq(nrow(dados)), parcela, sample, size = 3))),] 2011/10/29 Samuel Carvalho <samukajm@yahoo.com.br>:
Caros, Boa tarde, Alguem tem alguma dica para fazer amostras aleatorias de um conjunto de dados agrupado por parcela? Segue um #RCMR de exemplo dados <- data.frame(parcela = rep(1:5,each=5), obs=rep(1:5,5), y=rnorm(25), z=rnorm(25)) dados a idéia é que sejam retiradas amostras aleatorias deste conjunto. Segue um exemplo de um código sugerido pelo Ivan, valeu Ivan amostras <- list() for(i in 1:5){ amostras[[i]] <- apply(subset(dados,parcela==i),2,function(x) sample(x,3,replace=F)) } amostras tmp <- as.data.frame(rbind(amostras[[1]],amostras[[2]],amostras[[3]],amostras[[4]],amostras[[5]])) tmp #Problema aqui é inserir uma a uma. Neste caso tenho cinco parcelas daí fica tranquilo mas a base que estou usando tem mais de 9mil, enfim
Grande abraço e bom fds a todos
==================================== Samuel P. C. Carvalho Mestre em Ciências Florestais [UFLA] Doutorando em Recursos Florestais [ESALQ/USP] ============================================= _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O
participantes (3)
-
Henrique Dallazuanna
-
Samuel Carvalho
-
Walmes Zeviani