[R-br] Sorteio aleatório de valores e substituir por NA
Paulo Nogueira Starzynski
paulons em gmail.com
Quarta Outubro 7 21:43:45 BRT 2015
Alexandre,
se me permite, acho que tenho uma solução mais simples, sem usar o pacode
dplyr e sem transformar o objeto de *matrix* para
*data.frame.*
Segue abaixo:
# Definir o número de linhas e colunas da base original
n <- 100
nCols <- 10
# Construir a base original
dados <- matrix(runif(n * nCols), nrow = n)
dados <- cbind(1:nrow(dados), dados)
nomeVars <- c("var1",
"var2","var3","var4","var5","var6","var7","var8","var9","var10")
attributes(dados)$dimnames <- list(1:nrow(dados), c("ID", nomeVars))
head(dados)
# Sorteio de 20% das linhas
nLinhas <- n * 0.2
amostra20 <- sample(1:nrow(dados), size = nLinhas, replace = F)
amostra20 <- amostra20[order(amostra20)]
dados20 <- dados[amostra20, ]
# Sorteio de 10% dos valores da subamostra
nValores <- (nLinhas * nCols) * 0.1
amostra10 <- sample(1:(nLinhas * nCols), size = nValores, replace = F)
amostra10 <- amostra10[order(amostra10)]
# substituir os valores por NA
dados20[, nomeVars][amostra10] <- NA
dados20
Abraços,
Paulo
Em 7 de outubro de 2015 18:48, ASANTOS <alexandresantosbr em yahoo.com.br>
escreveu:
> Caros Listeiros,
>
> Estou tentando criar uma rotina para primeiro sortear 20% de
> linhas de um data frame com 10 variáveis e n=100, e com o resultado desse
> sorteio eu gostaria de sortear 10% dos valores independente da variável e
> substituir por NA. No entanto, estou com dois problemas para realizar isso:
> 1) O objeto sampl.data.10 criado que corresponde ao sorteio de 10% dos
> valores não corresponde ao objeto que originou o sorteio (sampl.n.20); e 2)
> Quando faço o sorteio de 10% dos valores e substituo por NA, perco a
> informação do identificador da amostra ou seja meu dados$ID, segue CRM
> abaixo, alguém poderia me dar um help?
>
>
> #Variáveis artificiais
> dados<-runif(1000)
> dados<-(dados*100)+c(1:500, 500:1)
> dados<-matrix(dados,nrow=50,ncol=10)
> dados<-as.data.frame(dados)
> names(dados)<-c("var1",
> "var2","var3","var4","var5","var6","var7","var8","var9","var10")
> dados$ID<-1:length(dados[,1])
> dados<-as.data.frame(dados)
>
> #Pacote
> require(dplyr)
>
> ## Seleciono 20% das linhas do objeto dados
> sampl.n.20<-sample_frac(dados, 0.2)
> sampl.n.20
>
> ##Seleciono 10% de valores independente da variável
> n.data<-0.1*(length(sampl.20[,1])*length(sampl.20[1,]))
> sampl.data.10<-matrix(sample(c(NA,
> sampl.20[,1]),length(sampl.20[,1])*length(sampl.20[1,]), replace = TRUE),
> n.data)
> sampl.data.10
>
> 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 (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
> ======================================================================
>
> _______________________________________________
> 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 fornea cdigo
> mnimo reproduzvel.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151007/5ba6b5f1/attachment.html>
Mais detalhes sobre a lista de discussão R-br