[R-br] eliminar valores de data.frame

Vitor Aguiar vitor.aguiar em me.com
Quarta Maio 23 18:46:36 BRT 2012


OK Paulo,

agora entendi o que o programa está fazendo. Realmente funciona, eliminando corretamente os valores.
Muito Obrigado.

Porém, para uma outra aplicação desses dados, percebi que será essencial não eliminar os valores, mas transforma-los em NA (um dado em branco), pois preciso que seja mantida a estrutura do dataframe com o length original de cada coluna. 

É possível usar essa primeira parte do seu for loop e, de alguma forma, criar um novo dataframe "dados" onde os valores com frequência menor que 5 são substituídos por NA?


Vitor


On May 22, 2012, at 7:27 PM, Paulo Nogueira wrote:

> Vitor,
> você faz bem de tentar entender os códigos que o pessoal coloca no grupo ao invés de apenas roda-los.
> É uma ótima forma de aprender R.
> 
> Você disse que sua base tem 30 colunas. O programa que escrevi gera 30 vetores chamados Coluna1, Coluna2, ..., Coluna30 que contém o que os elementos que você precisa, segundo seu primeiro e-mail.
> 
> abraços,
> Paulo
> 
> Em 22 de maio de 2012 21:32, Vitor Aguiar <vitor.aguiar em me.com> escreveu:
> > Olá Paulo,
> >
> > muito obrigado.
> >
> > Como eu estou apenas aprendendo programação, testei o seu código mas ainda estou tentando compreender o resultado. Como assim gerar 30 vetores na área de trabalho?
> >
> > Pensei em outra coisa que também resolveria minha situação: substituir todos os valores que aparecem menos que 5 vezes no conjunto de dados por NA. Seria mais simples fazer isso?
> >
> >
> > Obrigado,
> > Vitor
> >
> >
> >
> > On May 22, 2012, at 11:04 AM, Paulo Nogueira wrote:
> >
> >> Vitor,
> >> você não mandou um CMR, mas assumindo que as colunas são comparadas
> >> duas a duas (coluna1 x coluna2, coluna3 x coluna4, etc) o programa
> >> abaixo deve resolver a situação.
> >> Serão gerados 30 vetores na área de trabalho.
> >>
> >> Faça os testes.
> >>
> >>
> >> # Exemplo de dados
> >> dados<-trunc(rnorm(30*100000,30,5))
> >> attr(dados, 'dim')<-c(100000,30)
> >> ##
> >>
> >> for (i in seq(1,30,by=2)) {
> >>
> >>  t<-table(dados[,c(i,i+1)])
> >>  n<-attributes(t[t<5])$dimnames[[1]]
> >>
> >>  assign(paste('Coluna',i,sep=''),dados[!dados[,(i)]%in%as.numeric(n),i])
> >>  assign(paste('Coluna',i+1,sep=''),dados[!dados[,(i+1)]%in%as.numeric(n),(i+1)])
> >> }
> >>
> >>
> >> Em 21/05/12, Vitor Aguiar<vitor.aguiar em me.com> escreveu:
> >>> Caros,
> >>>
> >>> tenho um data frame com 30 colunas e 100 mil linhas, composto de valores
> >>> numéricos de 1 a 65. Gostaria de eliminar todos os valores que aparecem
> >>> menos de 5 vezes, em cada 2 colunas consecutivas separadamente.
> >>>
> >>> Por exemplo, se o valor "18" aparece 4 vezes entre os 200.000 valores das
> >>> minhas 2 primeiras colunas, eu gostaria de eliminar todos os 4.
> >>>
> >>> Eu sei que no final eu teria colunas de lengths diferentes no meu data
> >>> frame, mas eu não preciso recriar o data frame, eu só preciso usar os pares
> >>> de colunas separadamente.
> >>>
> >>> Como fazer isso?
> >>>
> >>> Desde já, muito obrigado aos que puderem ajudar.
> >>>
> >>>
> >>> Vitor Aguiar
> >>>
> >>>
> >> _______________________________________________
> >> 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.
> >
> >
> > _______________________________________________
> > 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.
> 
> _______________________________________________
> 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.


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


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