[R-br] Ajuda com substituição de valores em um data frame

Walmes Zeviani walmes em ufpr.br
Quarta Setembro 12 11:14:56 BRT 2012


Olá. É mais interessante que você envie suas dúvidas para a lista pois (1)
você pode obter diversas soluções (2) você pode ser respondida em menos
tempo (3) sua mensagem pode interessar a mais pessoas (4) ela fica no
histórico da lista para consulta futura. Segue uma possível solução usando
match().

da <- matrix(sample(c("a","c","g","t"), 20, replace=TRUE), ncol=5)
da

typeof(da) # matrix de character, converter seu data.frame para matriz com
as.matrix()

atual <- c("a","c","g","t")
recod <- c(1,2,1,2)
data.frame(atual, recod)

indic <- match(da, atual) # matriz de indices
db <- matrix(recod[indic], nrow=nrow(da))
db # matriz recodificada,
as.data.frame(db) # pode ser convertida para data.frame com as.data.frame

À disposição.
Walmes.

==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
VoIP: (3361 3600) 1053 1173
e-mail: walmes em ufpr.br
skype: walmeszeviani
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================


2012/9/11 <elisabpereira em gmail.com>

> Olá,
>
> tudo bem?
> Desculpe enviar um e-mail diretamente para você, mas já enviei minha
> dúvida para o fórum do R e não consegui resolver meu problema. Vi que vc
> ajuda muitas pessoas por aqui, e se não for pedir muito, também queria uma
> ajudinha.
>
> Tenho um data frame de 21 linhas e 329 colunas. As células do data frame
> são compostas pelos caracteres "a", "c", "g" ou "t". Quero fazer com que as
> células preenchidas pelos caracteres "a" ou "g" sejam substituídas pelo
> numeral 1, e as células com os caracteres "c" ou "t" sejam substituídas por
> 2.
>
> Quando uso:
> ifelse(dataframe=="a",1,0)
>
> Nesse caso, as células com "a" são substituídas pelo valor 1 e as demais
> são substituídas por 0.
> Tem alguma forma de fazer com q elas sejam substituídas por 1 e que o
> restante permaneça como está? Desta forma eu poderia usar o ifelse quatro
> vezes, uma para cada caracter.
> Também tentei usar:
> if (dataframe=="a") {1} else
>     if (dataframe=="g") {1} else
>       if (dataframe=="t") {2}  else
>       if (dataframe=="c") {2}
> Mas recebo o seguinte warning: "a condição tem comprimento > 1 e somente o
> primeiro elemento será usado"
>
> Também tentei  usar o recode, mas não consegui fazer funcionar.
>
> Muito obrigada pela ajuda!!!
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120912/a5b39a53/attachment.html>


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