Caro

Não consegui reproduzir seu erro. Seu código com loop <for> funcionou perfeitamente
Fiz uma amostragem com 20000 observações.
Encapsulei numa função simples onde se tem a opção do n amostral, com e sem reposição

segue sugestões:

Id = 1:20000
X = rep(c("A","B","A","C","A","A","B","A","C","A","A","B","A","C","A","A","B","A","C","A"), 1000)
Dados = data.frame(Id,X) ## Dados

## sugestão 1
amostragem1 = function(Dados, n=5, replace=TRUE)
{
IdDados = sample(Dados[,1], n, replace = replace)
DadosAm = NULL
for (i in 1:n) DadosAm = rbind(DadosAm, Dados[Id == IdDados[i],])
return(DadosAm)
}##end amostragem1

## amostragem com n = 5 e sem repetição
amostragem1(Dados, n=5)

## sugestão 2
amostragem2 = function(Dados, n=5, replace=TRUE)
{
IdDados = sample(Dados[,1], n, replace = replace)
return(Dados[Dados[,1] %in% IdDados,])
}##end amostragem2

## amostragem com n = 5 e sem repetição
amostragem2(Dados, n=5)

saudações

Em Seg, Ago 29, 2016 em 4:56 , Julimar Pinto via R-br <r-br@listas.c3sl.ufpr.br> escreveu:

Dependendo do tipo de amostragem, costumo utilizar a package "sampling". Que, no caso de amostras complexas (com ou sem reposição), trabalha de modo bastante conjugado com a package "survey".

Saudações,

Julimar

Muito bom isso: Nunca votar no PSDB/DEM, muito bom mesmo!


Em 28/08/2016 20:29, "Marcos Bissoli via R-br" <r-br@listas.c3sl.ufpr.br> escreveu:
Prezados,

Peço desculpas de antemão se meu problema é de extrema trivialidade ou se o tema já fora aqui debatido. No entanto, pesquisei os arquivos do fórum e não encontrei, dessa vez, uma solução.

Gerei um código simplificado de meu problema. Meu intuito é extrair uma sub-amostra de uma amostra de dados já coletados para fins de análise com melhor equilíbrio entre os grupos observados. Assim, elaborei algo semelhante com o abaixo.

Id <- 1:20
X <- c("A","B","A","C","A","A","B","A","C","A","A","B","A","C","A","A","B","A","C","A")
Dados <- data.frame(Id,X)
IdDados <- sample(Dados$Id,5,replace = FALSE)
DadosAm <- Dados[id==IdDados[1],]
for (i in 2:5) DadosAm <- rbind(DadosAm,Dados[id==IdDados[i],])
DadosAm

Este código funciona, e consigo extrair uma sub-amostra aleatória de n1=5 a partir de uma amostra inicial de n=20 em data.frame.

No entanto, meu real problema é gerar uma sub-amostra de n1=88 em uma amostra inicial de n=1668. Mas, quando tento fazer com tais dimensões a sub-amostra gera uma série de NA's, que não existem na amostra original.

Chequei o funcionamento na amostra real e maior, e percebi que o primeiro Id de IdDados não corresponde ao Id de Dados adicionado já no primeiro comando de criação de DadosAm.

Creio que seja algum erro meu de implementação, mas cheguei a fazer testes com simulações de n e n1 maiores e deram certo. Mas quando vou para o meu banco real permanece o problema.

Desde já, agradeço qualquer ajuda, e reitero minhas desculpas pela possível trivialidade da dúvida.

Saudações acadêmicas,


--
MARCOS BISSOLI

Faculdade de Nutrição
Universidade Federal de Alfenas

Blog: bocademiamaldita.blogspot.com/
E-mail: mbissoli@gmail.com
Twitter: #mbissoli

Alfenas, Minas Gerais, Brasil


*****Pense na Natureza antes de Imprimir*****
Divulgue ON-LINE

Eu apoio a ENEN "na luta por um Brasil sem fome"

"por ĉiu popolo ties propran lingvon, por ĉiuj popoloj la esperantan"
(para cada povo sua própria língua, para todos os povos o Esperanto)

E nunca votarei no PSDB/DEM!

_______________________________________________
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.