
Olá pessoal! Estou trabalhando numa base de dados e preciso criar algumas dummies, sendo que comando que geralmente utilizo é: mydata$dac<-ifelse(mydata$origin=="ac",1,0) Mas como preciso criar várias dummies, gostaria de saber se há como fazer isso de uma só vez? Isto é, utilizando um único comando. As dummies são para origin, destination e ano. Ou seja: Dummies para as regiões de origem (origin) Dummies para as regiões de destino (destination) Dummies para as regiões de origem com relação ao ano (Por exemplo: origin ac e ano 1998 = 1, ...) Dummies para as regiões de destino com relação ao ano (Por exemplo: destination ac e ano 1998 = 1, ...) Dummy para ano
str(mydata) 'data.frame': 4158 obs. of 9 variables: $ origin : Factor w/ 27 levels "ac","al","am",..: 1 1 1 1 1 1 1 1 1 1 ... $ destination: Factor w/ 78 levels "ac","africa",..: 3 3 5 5 7 7 13 13 17 17 ... $ ano : int 1998 1999 1999 1998 1999 1998 1999 1998 1998 1999 ... $ pib_i : num 1694329 1866542 1866542 1694329 1866542 ... $ pop_i : int 514050 527937 527937 514050 527937 514050 527937 514050 514050 527937 ... $ value : num 785 115 32290 0 0 ... $ pib_j : num 6676333 6935080 13933920 13198510 2128307 ... $ pop_j : num 2688117 2713203 2580860 2520684 439781 ... $ dist : num 5039 5039 1445 1445 NA ...
Desde já muito obrigado! -- *Alexandre Rodrigues Loures*

Se você vai usar essas variáveis categóricas em um modelo de regressão, como por exemplo nas funções lm() e glm(), você não precisa passar por essa etapa (dolorosa) de criar as dummies. Essas funções já criam uma matriz de incidência (zeros e uns) correspondente à cada fator categórico declarado na fórmula do modelo. No R o primeiro nível de um fator é tomado como categoria de referência. Veja str(ChickWeight) m0 <- lm(weight~Diet, data=subset(ChickWeight, Time==20)) summary(m0) Caso você esteja usando outras funções e enfim, realmente precise dessa matriz de dummies, pode ser obtida com X <- model.matrix(~0+Diet, data=subset(ChickWeight, Time==20)) head(X) unique(X) X À disposição. Walmes.

e se precisar, model.matrix()... Em 23 de abril de 2014 16:45, walmes . <walmeszeviani@gmail.com> escreveu:
Se você vai usar essas variáveis categóricas em um modelo de regressão, como por exemplo nas funções lm() e glm(), você não precisa passar por essa etapa (dolorosa) de criar as dummies. Essas funções já criam uma matriz de incidência (zeros e uns) correspondente à cada fator categórico declarado na fórmula do modelo. No R o primeiro nível de um fator é tomado como categoria de referência. Veja
str(ChickWeight) m0 <- lm(weight~Diet, data=subset(ChickWeight, Time==20)) summary(m0)
Caso você esteja usando outras funções e enfim, realmente precise dessa matriz de dummies, pode ser obtida com
X <- model.matrix(~0+Diet, data=subset(ChickWeight, Time==20)) head(X) unique(X) X
À disposição. Walmes.
_______________________________________________ R-br mailing list R-br@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.

Muito obrigado Walmes e Benilton! Walmes, infelizmente terei de criar essas dummies. E só mais uma coisa, você disse que no R o primeiro nível é a categoria de referência. Todavia, para origin (com 27 levels) estão sendo criadas 27 dummies e para destination (com 78 levels) estão sendo criadas 78 dummies. Não era para ser 26 e 77 dummies? Em 23-04-2014 16:45, walmes . escreveu:
Se você vai usar essas variáveis categóricas em um modelo de regressão, como por exemplo nas funções lm() e glm(), você não precisa passar por essa etapa (dolorosa) de criar as dummies. Essas funções já criam uma matriz de incidência (zeros e uns) correspondente à cada fator categórico declarado na fórmula do modelo. No R o primeiro nível de um fator é tomado como categoria de referência. Veja
str(ChickWeight) m0 <- lm(weight~Diet, data=subset(ChickWeight, Time==20)) summary(m0)
Caso você esteja usando outras funções e enfim, realmente precise dessa matriz de dummies, pode ser obtida com
X <- model.matrix(~0+Diet, data=subset(ChickWeight, Time==20)) head(X) unique(X) X
À disposição. Walmes.
_______________________________________________ R-br mailing list R-br@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.
-- *Alexandre Rodrigues Loures* Doutorando em Economia Aplicada Universidade Federal da Paraíba - UFPB Centro de Ciências Sociais Aplicadas - CCSA Programa de Pós-Graduação em Economia - PPGE Tel.: +55 32 9102-0690 (MG) ou +55 83 9804-1000 (PB) e-Mail: alexandre.loures@ymail.com Site: www.ccsa.ufpb.br/ppge

Você está usando o model.matrix() com o 0? Se você tem um fator com K níveis e declara apenas ele, a matriz correspondente terá K colunas. Sem usar o 0 na fórmula, a primeira coluna refere-se ao intercepto, as demais representam contrastes para com esse nível. No entanto, com mais de um fator categórico, o intercepto vai representar simultaneamente o primeiro nível dos dos fatores declarados. A melhor coisa a fazer é brincar com a função para entender o que ela faz. Consulte a documentação da função para mais detalhes e opções. da <- expand.grid(A=gl(2,1), B=gl(3,1), C=gl(4,1)) str(da) model.matrix(~A, da) model.matrix(~0+A, da) model.matrix(~B, da) model.matrix(~C, da) model.matrix(~A+B, da) model.matrix(~A*B, da) model.matrix(~A/B, da) model.matrix(~A:B, da) model.matrix(~0+A:B, da) model.matrix(~A+B+C, da) À disposição. Walmes.

Ok Walmes! Muito obrigado! Em 24-04-2014 09:33, walmes . escreveu:
Você está usando o model.matrix() com o 0? Se você tem um fator com K níveis e declara apenas ele, a matriz correspondente terá K colunas. Sem usar o 0 na fórmula, a primeira coluna refere-se ao intercepto, as demais representam contrastes para com esse nível. No entanto, com mais de um fator categórico, o intercepto vai representar simultaneamente o primeiro nível dos dos fatores declarados. A melhor coisa a fazer é brincar com a função para entender o que ela faz. Consulte a documentação da função para mais detalhes e opções.
da <- expand.grid(A=gl(2,1), B=gl(3,1), C=gl(4,1)) str(da)
model.matrix(~A, da) model.matrix(~0+A, da) model.matrix(~B, da) model.matrix(~C, da) model.matrix(~A+B, da) model.matrix(~A*B, da) model.matrix(~A/B, da) model.matrix(~A:B, da) model.matrix(~0+A:B, da) model.matrix(~A+B+C, da)
À disposição. Walmes.
_______________________________________________ R-br mailing list R-br@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.
-- *Alexandre Rodrigues Loures* Doutorando em Economia Aplicada Universidade Federal da Paraíba - UFPB Centro de Ciências Sociais Aplicadas - CCSA Programa de Pós-Graduação em Economia - PPGE Tel.: +55 32 9102-0690 (MG) ou +55 83 9804-1000 (PB) e-Mail: alexandre.loures@ymail.com Site: www.ccsa.ufpb.br/ppge
participantes (3)
-
Alexandre Loures
-
Benilton Carvalho
-
walmes .