[R-br] aplicando cálculo sobre linhas de um dataframe

Vitor Aguiar vitor.aguiar em me.com
Sexta Maio 18 16:45:59 BRT 2012


Obrigado a todos!
Eu tentei a solução do Sandro, mas meu computador fica computando por vários minutos e o cálculo não termina.
A ideia do Marcos deu certo!
Muito bom, obrigado mesmo!


Vitor



On May 18, 2012, at 12:34 PM, Marcos Silva wrote:

> Vitor, não sei se vai funcionar... mas não custa tentar... :) 
>  
> Supondo que seu data frame se chame "df" mas
>  
> calc <- function(x){
> x1 <- x[seq(1, length(x)-1, 2)]
> x2 <- x[seq(2, length(x)  ,  2)]
> sum(x1-x2 == 0, na.rm=TRUE)
> }
> apply(df, 1, calc)
> 
> 
> 
>  
> 
> Em 18 de maio de 2012 15:28, Sandro Sperandei <ssperandei em hotmail.com> escreveu:
> Vitor,
>  
> A forma mais simples que posso oferecer, sem conhecer a sua estrutura de dados, é essa:
>  
> soma = as.vector(rep(0,dim(x)[1]))
>  
> for(i in 1:dim(x)[1]){
>               for(j in c(seq(1,dim(x)[2]-1,2))){
>  
>                                                 soma = soma + ifelse(is.na(x[i,j]) | is.na(x[i,(j+1)]), 0, ifelse(x[i,j]==x[i,(j+1)], 1, 0))
>                                                 }
>              }
>  
> Onde “x” é a matriz de dados originais
>  
> S
>  
>  
>  
>  
>  
>  
>  
> From: Vitor Aguiar
> Sent: Friday, May 18, 2012 2:30 PM
> To: r-br em listas.c3sl.ufpr.br
> Subject: [R-br] aplicando cálculo sobre linhas de um dataframe
>  
> Olá. Postei essa pergunta ontem mas não obtive resposta. Desculpe por estar postando novamente.
>  
> Tenho um dataframe com milhares de linhas com valores NAs e não-NAs. Suponhamos a seguinte linha:
>  
> 1. NA NA NA NA NA NA 6 6 NA NA 8 11 NA NA 17 18 NA NA 10 10 11 13 8 9 11 11 11 11
>  
> Vamos considerar os dados em pares. Assim, meu primeiro par é NA NA, o quarto par é 6 6. Há alguma forma de eu contar quantos pares iguais eu tenho em cada linha do dataframe? Assim, nessa linha por exemplo eu teria o resultado 4, pois tenho 4 pares de valores iguais (6 6, 10 10, 11 11, 11 11).
> Então preciso aplicar o cálculo para todas as linhas.
>  
> O caminho seria um loop onde eu contaria dados[i, 1] == dados[i, 2]?
>  
>  
> Obrigado,
> Vitor
> 
> _______________________________________________
> 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.
> 
> 
> 
> -- 
> Marcos F. Silva
> http://sites.google.com/site/marcosfs2006
> _______________________________________________
> 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.

Vitor Rezende da Costa Aguiar
---------------------------------------------------
PhD candidate in biotechnology
Rede Nordeste de Biotecnologia
UFES, Brazil
---------------------------------------------------
Current Adress: 
Department of Integrative Biology
University of California, Berkeley
2033 Valley Life Sciences Building #4134
Berkeley, CA 94720
Phone: 1 (510) 473-2070

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


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