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 <[email protected]> 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<[email protected]> 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 > >> [email protected] > >> 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 > > [email protected] > > 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 > [email protected] > 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 [email protected] 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.
