Programa R para Biologia da Conservação
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Mudanças de Conteúdos em Colunas

2 participantes

Ir para baixo

Mudanças de Conteúdos em Colunas Empty Mudanças de Conteúdos em Colunas

Mensagem por Prions Sáb Mar 31, 2018 11:11 am

Professor Marcos,

Qual a maneira mais prática de substituir colunas criadas com variáveis nominais por fatores binários ou ordinais?

Se for o caso de isso ser necessário p/várias colunas, o comando pode ser criado de uma vez só p/todas elas?

Grata pela atenção,
Priscilla

Prions

Mensagens : 18
Data de inscrição : 12/03/2018

Ir para o topo Ir para baixo

Mudanças de Conteúdos em Colunas Empty Re: Mudanças de Conteúdos em Colunas

Mensagem por Prof. Marcos Sáb Mar 31, 2018 8:39 pm

Olá, Priscila!

Vai depender do contexto e das mudanças necessárias. Um caso bem simples, para variáveis binárias, poderia ser assim:

Código:
#Criando dados de exemplo:
exemplo<-structure(list(var1 = structure(c(1L, 1L, 1L, 2L, 2L, 1L, 2L,
1L, 2L, 2L), .Label = c("a", "b"), class = "factor")), .Names = "var1", class = "data.frame", row.names = c(NA,
-10L))

#Os dados (é apenas uma coluna):
exemplo

#No momento, é uma variável categórica (um fator, na linguagem do R):
str(exemplo)

#Podemos mudar para uma variável binária usando um ifelse():
exemplo<-ifelse(exemplo$var1=="a", 1, 0)

#Agora é assim:
exemplo

#E não é mais um fator:
str(exemplo)

A função ifelse() pega uma condição e estabelece uma resposta para quando a condição é verdadeira e outra para quando ela é falsa. Então eu pedi para que ele mudasse para 1 quando a variável fosse "a", e para 0 quando ela não fosse. Como é um exemplo binário, eu nem precisei fazer referência ao "b".

Depois volto aqui e continuamos, ok?
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Mudanças de Conteúdos em Colunas Empty Re: Mudanças de Conteúdos em Colunas

Mensagem por Prions Sáb Mar 31, 2018 9:11 pm

Ok, professor.

Valeu demais pela ajuda!

Prions

Mensagens : 18
Data de inscrição : 12/03/2018

Ir para o topo Ir para baixo

Mudanças de Conteúdos em Colunas Empty Re: Mudanças de Conteúdos em Colunas

Mensagem por Prof. Marcos Dom Abr 01, 2018 8:25 pm

Continuando...

Se você estiver lidando com muitas classes, uma solução rápida é simplesmente alterar a classe da variável, usando um as.numeric(). Isso irá alterar cada nível do fator em um número, começando do 1 e seguindo. Por exemplo:

Código:
#Dados de exemplo:
dados<-structure(list(Var1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 1L, 2L, 3L), .Label = c("a", "b", "c"), class = "factor"),
    Var2 = structure(c(2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L,
    1L, 3L), .Label = c("a", "d", "e", "f"), class = "factor"),
    Var3 = structure(c(3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
    1L, 2L), .Label = c("x", "y", "z"), class = "factor")), .Names = c("Var1",
"Var2", "Var3"), class = "data.frame", row.names = c(NA, -12L
))


#Olhando os dados:
dados

#As variáveis:
str(dados)

#Mudando a variável 1:
dados$Var1<-as.numeric(dados$Var1)

#Agora:
dados
str(dados)


Agora, você pode querer fazer a mudança em várias, seria assim:

Código:
#Tudo de uma vez:
dados<-lapply(dados, as.numeric)

#O lapply muda o objeto para uma lista, mas é fácil mudar de volta:
dados<-as.data.frame(dados)

#Como ficou agora:
dados
str(dados)

Taí! Very Happy
Prof. Marcos
Prof. Marcos

Mensagens : 678
Data de inscrição : 23/12/2015
Idade : 42
Localização : Maceió, AL

https://cantinhodor.wordpress.com/

Ir para o topo Ir para baixo

Mudanças de Conteúdos em Colunas Empty Re: Mudanças de Conteúdos em Colunas

Mensagem por Prions Dom Abr 01, 2018 9:29 pm

Aow! Que bacana essa versatilidade do R, gente!

Muito obrigada pelas instruções, professor!

Abs

Prions

Mensagens : 18
Data de inscrição : 12/03/2018

Ir para o topo Ir para baixo

Mudanças de Conteúdos em Colunas Empty Re: Mudanças de Conteúdos em Colunas

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos