[R-br] eliminar valores de data.frame

Vitor Aguiar vitor.aguiar em me.com
Quinta Maio 24 16:46:31 BRT 2012


Paulo,

muito obrigado mesmo pela ajuda! Funciona muito bem.
Resolvido!


Vitor


On May 24, 2012, at 5:04 AM, Paulo Nogueira wrote:

> André, assim fica até mais simples, pois é possível alterar os valores
> no próprio data.frame (ou matriz) uma vez que as dimensões são
> mantidas.
> 
> Veja:
> 
> # 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]]
> 
>  dados[dados[,(i)]%in%as.numeric(n),i]<-NA
>  dados[dados[,(i+1)]%in%as.numeric(n),i+1]<-NA
> }
> 
> 
> Abraços,
> Paulo Nogueira Starzynski
> 
> Em 23/05/12, Vitor Aguiar<vitor.aguiar em me.com> escreveu:
>> 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.
>> 
>> 
>> 
> _______________________________________________
> 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.




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