[R-br] Função usando sample

ASANTOS alexandresantosbr em yahoo.com.br
Terça Maio 20 16:27:22 BRT 2014


Obrigado Benilton,

         Mas no caso de meus dados reais não posso usar:


res = do.call(rbind, lapply(split(dados, dados$n.talhao), function(x) 
x[sample(nrow(x), 20),]))


Pois eu tenho n.talhao com os mesmos números, mas diferentes 
proj.talhao, o que constitui uma área diferente, cada um, mas a 
associação de n.talhao e proj.talhao é que caracterizam verdadeiramente 
áreas diferentes, sendo:

dados$ab<- interaction(dados$proj.talhao, dados$n.talhao)

mas quando aplico sua função sobre o objeto dados$ab, tenho o erro:

d, lapply(split(dados, dados$ab), function(x) x[sample(nrow(x), 40),]))
Erro em sample.int(length(x), size, replace, prob) :
   impossível tomar uma amostra maior que a população quando 'replace = 
FALSE'


CRM:

##
proj.talhao<-sort(rep(c("tamandua","itapagi","corrego"),100))
n.talhao<-sort(rep(c("144","256","356","144","301","180"),50))
dados<-as.data.frame(cbind(proj.talhao,n.talhao))
dados$medida1<-rnorm(nrow(dados),300)
dados$medida2<-rnorm(nrow(dados),300)
dados$medida3<-rnorm(nrow(dados),300)
dados$ab<- interaction(dados$proj.talhao, dados$n.talhao)
head(dados)
##



Em 20/05/2014 15:04, Benilton Carvalho escreveu:
> a funcao q passei faz exatamente o que vc descreve... entretanto, o 
> seu conjunto de dados de exemplo nao parece adequado para o problema q 
> vc quer resolver. benilton
>
>
> Em 20 de maio de 2014 15:08, ASANTOS <alexandresantosbr em yahoo.com.br 
> <mailto:alexandresantosbr em yahoo.com.br>> escreveu:
>
>     Obrigado Robert e Benilton,
>
>
>                   Mas na verdade ainda não resolveu, vou tentar
>     explicar de outro modo, tenho 15 áreas hipotéticas (str
>     (dados$ab)), sendo:
>
>
>
>
>     proj.talhao<-sort(rep(c("tamandua","itapagi","corrego"),100))
>     n.talhao<-sort(rep(c("144","256","356","144","301","180"),50))
>     dados<-as.data.frame(cbind(proj.talhao,n.talhao))
>     dados$medida1<-rnorm(nrow(dados),300)
>     dados$medida2<-rnorm(nrow(dados),300)
>     dados$medida3<-rnorm(nrow(dados),300)
>     dados$ab<- interaction(dados$proj.talhao, dados$n.talhao)
>     head(dados)
>     ##
>
>
>      Porém para uma mesma variável resposta tenho vetores de tamanhos
>     diferentes e quero compará-los, gostaria de sortear ao acaso um
>     mesmo número de dados das 15 áreas (por exemplo 40 dados) para
>     fazer as análises e não ter problemas com desbalanceamento, para
>     tanto preciso de uma função do tipo a cada modificação em dados$ab
>     realizar a função sample (nomesdasáreas, 40),
>
>
>     Obrigado
>
>
>
>     Em 20/05/2014 11:02, Robert Iquiapaza escreveu:
>
>         Será disso que vc precisa?
>         ##
>         str(dados$ab)
>         dados$nobs=1:length(dados$ab) #só pra conferir
>         nopar=table(dados$ab)
>         nopar=nopar[nopar!=0]
>         nopara=cumsum(nopar)
>         seqs=sort(sample(1:nopara[1],20)) #i=4
>         for(i in
>         2:length(nopara))seqs=c(seqs,sort(sample((nopara[i-1]+1):nopara[i],20)))
>         seqs
>         length(seqs)
>         dados[seqs,]
>
>         ###
>         Sds
>         Robert
>
>
>         Em 20 de maio de 2014 11:23, ASANTOS
>         <alexandresantosbr em yahoo.com.br
>         <mailto:alexandresantosbr em yahoo.com.br>> escreveu:
>
>             Boa tarde Pessoal,
>
>                    Ainda não consegui solucionar meu problema usando
>             uma função com
>             sample:
>
>             Tenho os seguintes dados artificiais:
>
>             #
>             set.seed(765)
>
>             proj.talhao<-sort(rep(c("tamandua","itapagi","corrego"),100))
>             n.talhao<-sort(rep(c("144","256","356","144","301","180"),50))
>             dados<-as.data.frame(cbind(proj.talhao,n.talhao))
>             dados$medida1<-rnorm(nrow(dados),300)
>             dados$medida2<-rnorm(nrow(dados),300)
>             dados$medida3<-rnorm(nrow(dados),300)
>             dados$ab<- interaction(dados$proj.talhao, dados$n.talhao)
>             head(dados)
>             ##
>
>
>             E gostaria que a cada alteração em cada área umas das 5
>             áreas do objeto
>             dados$ab fossem amostradas 20 linhas e o resultado fosse
>             armazenado como:
>
>             proj.talhao n.talhao  medida1  medida2  medida3      ab
>             1     corrego      144 299.8956 300.5377 300.7281 corrego.144
>             2     corrego      144 300.7179 298.9645 301.9793 corrego.144
>             3     corrego      144 300.5074 302.8484 298.4562 corrego.144
>
>             Onde tenho somente as linhas sorteadas com todos os
>             identificadores
>             originais,
>
>             Obrigado,
>
>             --
>             ======================================================================
>             Alexandre dos Santos
>             Proteção Florestal
>             IFMT - Instituto Federal de Educação, Ciência e Tecnologia
>             de Mato Grosso
>             Campus Cáceres
>             Caixa Postal 244
>             Avenida dos Ramires, s/n
>             Bairro: Distrito Industrial
>             Cáceres - MT                      CEP: 78.200-000
>             Fone: (+55) 65 8132-8112
>             <tel:%28%2B55%29%2065%208132-8112> (TIM) (+55) 65
>             9686-6970 <tel:%28%2B55%29%2065%209686-6970> (VIVO)
>             e-mails:alexandresantosbr em yahoo.com.br
>             <mailto:e-mails%3Aalexandresantosbr em yahoo.com.br>
>             alexandre.santos em cas.ifmt.edu.br
>             <mailto:alexandre.santos em cas.ifmt.edu.br>
>             Lattes: http://lattes.cnpq.br/1360403201088680
>             =====================================================================
>
>
>     -- 
>     ======================================================================
>     Alexandre dos Santos
>     Proteção Florestal
>     IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato
>     Grosso
>     Campus Cáceres
>     Caixa Postal 244
>     Avenida dos Ramires, s/n
>     Bairro: Distrito Industrial
>     Cáceres - MT                      CEP: 78.200-000
>     Fone: (+55) 65 8132-8112 <tel:%28%2B55%29%2065%208132-8112> (TIM)
>     (+55) 65 9686-6970 <tel:%28%2B55%29%2065%209686-6970> (VIVO)
>     e-mails:alexandresantosbr em yahoo.com.br
>     <mailto:e-mails%3Aalexandresantosbr em yahoo.com.br>
>     alexandre.santos em cas.ifmt.edu.br
>     <mailto:alexandre.santos em cas.ifmt.edu.br>
>     Lattes: http://lattes.cnpq.br/1360403201088680
>     ======================================================================
>
>
>
>     _______________________________________________
>     R-br mailing list
>     R-br em listas.c3sl.ufpr.br <mailto:R-br em 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.
>
>
>
>
> -- 
> Benilton Carvalho on about.me
> 		
> Benilton Carvalho
> about.me/benilton
>
> <http://about.me/benilton>
>
>
> _______________________________________________
> R-br mailing list
> R-br em 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.

-- 
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT                      CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
         alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140520/080dd3ce/attachment.html>


Mais detalhes sobre a lista de discussão R-br