Helio, dai temos varias possiveis soluções.. ou sortear as 2 colunas no fim:do.call(rbind, by(dados, dados[,1], function(x, ...) x[sample(1:nrow(x), ...), ], size=1))[,c(1:2, sample(3:4, 1))]
Ou mexer na função dentro do apply e fazer o sorteio para cada ponto:
do.call(rbind, by(dados, dados[,1], function(x, ...) { z <- x[sample(1:nrow(x), ...), c(1:2, sample(3:4, 1))] ; colnames(z) <- c('ponto', 'planta', 'valor') ; z } , size=1))2013/5/24 Hélio Gallo Rocha <heliogallorocha@gmail.com>
Mandei exemplo em que dobrou o numero de plantas, esse seria o exemplo correto:ponto=c(rep(3001,6),rep(3002,6),rep(3003,6));ponto ;length(ponto)planta=c(rep(seq(1:6),3));planta ;length(planta)valor1=seq(1.25,10,.5);valor1;length(valor1)valor2=seq(10,1.25,-.5);valor2;length(valor2)dados=cbind(ponto,planta,valor1,valor2);dadosGratoHélioEm 24 de maio de 2013 09:20, Hélio Gallo Rocha <heliogallorocha@gmail.com> escreveu:
Rodrigo, fiquei em outra situação.A função envida funciona, mas se tiver mais uma variável como este exemplo:ponto=c(rep(3001,12),rep(3002,12),rep(3003,12))planta=c(rep(seq(1:6),6))valor1=seq(1.25,10,.25)valor2=seq(10,1.25,-.25)ramo1=c(rep("A",36))ramo2=c(rep("B",36))dados=cbind(ponto,planta,valor1,valor2);dadosponto planta valor1 valor2[1,] 3001 1 1.25 10.00[2,] 3001 2 1.50 9.75[3,] 3001 3 1.75 9.50[4,] 3001 4 2.00 9.25[5,] 3001 5 2.25 9.00[6,] 3001 6 2.50 8.75[7,] 3001 1 2.75 8.50[8,] 3001 2 3.00 8.25[9,] 3001 3 3.25 8.00[10,] 3001 4 3.50 7.75[11,] 3001 5 3.75 7.50[12,] 3001 6 4.00 7.25[13,] 3002 1 4.25 7.00[14,] 3002 2 4.50 6.75[15,] 3002 3 4.75 6.50[16,] 3002 4 5.00 6.25[17,] 3002 5 5.25 6.00[18,] 3002 6 5.50 5.75[19,] 3002 1 5.75 5.50[20,] 3002 2 6.00 5.25[21,] 3002 3 6.25 5.00[22,] 3002 4 6.50 4.75[23,] 3002 5 6.75 4.50[24,] 3002 6 7.00 4.25[25,] 3003 1 7.25 4.00[26,] 3003 2 7.50 3.75[27,] 3003 3 7.75 3.50[28,] 3003 4 8.00 3.25[29,] 3003 5 8.25 3.00[30,] 3003 6 8.50 2.75[31,] 3003 1 8.75 2.50[32,] 3003 2 9.00 2.25[33,] 3003 3 9.25 2.00[34,] 3003 4 9.50 1.75[35,] 3003 5 9.75 1.50[36,] 3003 6 10.00 1.25do.call(rbind, by(dados, dados[,1], function(x, ...) x[sample(1:nrow(x), ...), ], size=1))ponto planta valor1 valor23001 3 1.75 9.503002 5 6.75 4.503003 4 9.50 1.75No caso seria sortear apenas um valor.A função que enviou resolve se as colunas valor 1 e valor 2 estiverem uma debaixo da outra, no exemplo seriam 72 linhas.Se tiver solução, seria mais fácil,Obrigado,HélioEm 23 de maio de 2013 21:39, Rodrigo Coster [via R-br] <ml-node+s2285057n4659434h22@n4.nabble.com> escreveu:
Ops, é sortear plantas dentro de ponto, nao ponto dentro de plantas. Troca o dados[,2] por dados[,1]do.call(rbind, by(dados, dados[,1], function(x, ...) x[sample(1:nrow(x), ...), ], size=1))2013/5/23 Rodrigo Coster <[hidden email]>Da para fazer com do.call() e by():do.call(rbind, by(dados, dados[,2], function(x, ...) x[sample(1:nrow(x), ...), ], size=1))Depois é só ir mudando o parametro size para outros tamanhos... e se quiser amostragem com reposição, adicionar o replace=TRUE depois do size.2013/5/23 Hélio Gallo Rocha <[hidden email]>
_______________________________________________Caros da ListaCom os dados hipotéticos abaixo:ponto=c(rep(3001,6),rep(3002,6),rep(3003,6))planta=c(rep(seq(1:6),3))valor=seq(1.5,10,.5)dados=cbind(ponto,planta,valor);dadosponto planta valor[1,] 3001 1 1.5[2,] 3001 2 2.0[3,] 3001 3 2.5[4,] 3001 4 3.0[5,] 3001 5 3.5[6,] 3001 6 4.0[7,] 3002 1 4.5[8,] 3002 2 5.0[9,] 3002 3 5.5[10,] 3002 4 6.0[11,] 3002 5 6.5[12,] 3002 6 7.0[13,] 3003 1 7.5[14,] 3003 2 8.0[15,] 3003 3 8.5[16,] 3003 4 9.0[17,] 3003 5 9.5[18,] 3003 6 10.0então temos 3 pontos ( 3001, 3002, 3003)seis plantas em cada ponto ( 1,2,3,4,5,,6)Já tentei usar sample, mas sorteia aleatoriamentePreciso que seja sorteada uma planta de cada ponto, depois vou sortear duas plantas de cada ponto, e assim sucessivamenteAgradeço desde já--
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho
R-br mailing list
[hidden email]
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.
_______________________________________________
R-br mailing list
[hidden email]
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.
http://r-br.2285057.n4.nabble.com/R-br-Selecao-de-plantas-sorteio-tp4659435p4659434.htmlIf you reply to this email, your message will be added to the discussion below:--
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho
--
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho
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.
_______________________________________________
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.