
Caros, Em algum ponto do tempo houve uma mudança na função factor. ### no passado: R.version # _ #platform i386-pc-mingw32 #arch i386 #os mingw32 #system i386, mingw32 #status #major 2 #minor 9.0 #year 2009 #month 04 #day 17 #svn rev 48333 #language R #version.string R version 2.9.0 (2009-04-17) set.seed(1) x <- round(runif(150,0,10),0) table(x) #x # 0 1 2 3 4 5 6 7 8 9 10 # 4 14 15 13 16 19 16 18 15 14 6 table(as.character(factor(x,levels=c(0:10),labels=c(rep('Tipo 1',3), rep('Tipo 2',4),rep('Tipo 3',2),'Tipo 4','Tipo 5')))) #Tipo 1 Tipo 2 Tipo 3 Tipo 4 Tipo 5 # 33 64 33 14 6 R.version # _ #platform i386-pc-mingw32 #arch i386 #os mingw32 #system i386, mingw32 #status #major 2 #minor 13.1 #year 2011 #month 07 #day 08 #svn rev 56322 #language R #version.string R version 2.13.1 (2011-07-08) set.seed(1) x <- round(runif(150,0,10),0) table(x) #x # 0 1 2 3 4 5 6 7 8 9 10 # 4 14 15 13 16 19 16 18 15 14 6 table(as.character(factor(x,levels=c(0:10),labels=c(rep('Tipo 1',3), rep('Tipo 2',4),rep('Tipo 3',2),'Tipo 4','Tipo 5')))) # #Tipo 1 Tipo 2 Tipo 3 Tipo 4 Tipo 5 # 33 64 33 14 6 #Mensagens de aviso perdidas: #In `levels<-`(`*tmp*`, value = c("Tipo 1", "Tipo 1", "Tipo 1", "Tipo 2", : # não se permite mais níveis duplicados em fatores Ele até faz mas com mensagem de erro. Como poderia fazer isto sem ter o erro!? Atenciosamente, Leandro Lins Marino Centro de Avaliação Fundação CESGRANRIO Rua Santa Alexandrina, 1011 - 2º andar Rio de Janeiro, RJ - CEP: 20261-903 ( (21) 2103-9600 R.:236 * <mailto:leandro@cesgranrio.org.br> leandro@cesgranrio.org.br P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos. Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a.

Leandro tente, table(cut(x, c(-Inf, 2, 6, 8, 9, Inf), labels = sprintf("Tipo %s", 1:5))) 2011/8/24 Leandro Marino <leandro@cesgranrio.org.br>
** **
Caros,****
Em algum ponto do tempo houve uma mudança na função factor.****
### no passado:****
*R.version*
# _ ****
#platform i386-pc-mingw32 ****
#arch i386 ****
#os mingw32 ****
#system i386, mingw32 ****
#status ****
#major 2 ****
#minor 9.0 ****
#year 2009 ****
#month 04 ****
#day 17 ****
#svn rev 48333 ****
#language R ****
#version.string R version 2.9.0 (2009-04-17)****
*set.seed(1)*
*x <- round(runif(150,0,10),0)*
*table(x)*
#x****
# 0 1 2 3 4 5 6 7 8 9 10 ****
# 4 14 15 13 16 19 16 18 15 14 6 ****
*table(as.character(factor(x,levels=c(0:10),labels=c(rep('Tipo 1',3),*
* rep('Tipo 2',4),rep('Tipo 3',2),'Tipo 4','Tipo 5'))))*
#Tipo 1 Tipo 2 Tipo 3 Tipo 4 Tipo 5 ****
# 33 64 33 14 6****
** **
R.version****
# _ ****
#platform i386-pc-mingw32 ****
#arch i386 ****
#os mingw32 ****
#system i386, mingw32 ****
#status ****
#major 2 ****
#minor 13.1 ****
#year 2011 ****
#month 07 ****
#day 08 ****
#svn rev 56322 ****
#language R ****
#version.string R version 2.13.1 (2011-07-08)****
set.seed(1)****
x <- round(runif(150,0,10),0)****
table(x)****
#x****
# 0 1 2 3 4 5 6 7 8 9 10 ****
# 4 14 15 13 16 19 16 18 15 14 6 ****
table(as.character(factor(x,levels=c(0:10),labels=c(rep('Tipo 1',3),****
rep('Tipo 2',4),rep('Tipo 3',2),'Tipo 4','Tipo 5'))))****
#****
#Tipo 1 Tipo 2 Tipo 3 Tipo 4 Tipo 5 ****
# 33 64 33 14 6 ****
#Mensagens de aviso perdidas:****
#In `levels<-`(`*tmp*`, value = c("Tipo 1", "Tipo 1", "Tipo 1", "Tipo 2", :****
# não se permite mais níveis duplicados em fatores****
Ele até faz mas com mensagem de erro. Como poderia fazer isto sem ter o erro!?****
** **
****
Atenciosamente, *Leandro Lins Marino** **Centro de Avaliação** **Fundação CESGRANRIO** **Rua Santa Alexandrina, 1011 - 2º andar** **Rio de Janeiro, RJ - CEP: 20261-903** **(** **(21) 2103-9600 R.:236 ** ***** leandro@cesgranrio.org.br*
** **
P* **Antes de imprimir* *pense em sua responsabilidade e compromisso com o* *MEIO AMBIENTE* ****
** **
Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos. ****
Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a.****
** **
_______________________________________________ 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.
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O

Benilton e Henrique, Neste caso usei um exemplo numérico. Mas e no caso de ter uma variável do tipo character ou factor. Como poderia fazer isto?! Atenciosamente, Leandro Lins Marino Centro de Avaliação Fundação CESGRANRIO Rua Santa Alexandrina, 1011 - 2º andar Rio de Janeiro, RJ - CEP: 20261-903 ( (21) 2103-9600 R.:236 * <mailto:leandro@cesgranrio.org.br> leandro@cesgranrio.org.br P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos. Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a. De: r-br-bounces@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] Em nome de Benilton Carvalho Enviada em: quarta-feira, 24 de agosto de 2011 14:19 Para: r-br@listas.c3sl.ufpr.br Assunto: Re: [R-br] Factors no R Sim, mudou no R-2.10.0. Use cut().

Leandro, nao sei se entendi o q vc quis perguntar. No caso do seu exemplo em particular: set.seed(1) u = runif(150,0,10) res = cut(u, c(0, 2.5, 6.5, 8.5, 10), include.lowest=TRUE, labels=paste("Tipo", 1:4)) table(res)
table(res) res Tipo 1 Tipo 2 Tipo 3 Tipo 4 33 64 33 20
Se vc se refere a particionar um vetor em grupos, use split(): set.seed(1) u = runif(150, 0, 10) grp = sample(letters[1:5], 150, rep=TRUE) split(u, grp) b

Benilton, Preparei outro exemplo (bem tosco =P ): set.seed(1) x <- sample(c('Abobrinha','Cachorro','Carro','Avião','Beija-Flor'),150,T) table(x) ### vamos supor que queira juntar Abobrinha e Avião; ### Cachorro e Beija-Flor y <- as.character(factor(x, levels=c('Abobrinha','Cachorro','Carro','Avião','Beija-Flor'), labels=c('Abobrinha e Avião','Cachorro e Beija-Flor','Carro', 'Abobrinha e Avião','Cachorro e Beija-Flor'))) table(y) #> table(x) #x # Abobrinha Avião Beija-Flor Cachorro Carro # 22 37 24 33 34 #> table(y) #y # Abobrinha e Avião Cachorro e Beija-Flor Carro # 59 57 34 Atenciosamente, Leandro Lins Marino Centro de Avaliação Fundação CESGRANRIO Rua Santa Alexandrina, 1011 - 2º andar Rio de Janeiro, RJ - CEP: 20261-903 R (21) 2103-9600 R.:236 ( leandro@cesgranrio.org.br Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos. Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a. -----Mensagem original----- De: r-br-bounces@listas.c3sl.ufpr.br [mailto:r-br-bounces@listas.c3sl.ufpr.br] Em nome de Benilton Carvalho Enviada em: quarta-feira, 24 de agosto de 2011 16:49 Para: r-br@listas.c3sl.ufpr.br Assunto: Re: [R-br] RES: Factors no R Leandro, nao sei se entendi o q vc quis perguntar. No caso do seu exemplo em particular: set.seed(1) u = runif(150,0,10) res = cut(u, c(0, 2.5, 6.5, 8.5, 10), include.lowest=TRUE, labels=paste("Tipo", 1:4)) table(res)
table(res) res Tipo 1 Tipo 2 Tipo 3 Tipo 4 33 64 33 20
Se vc se refere a particionar um vetor em grupos, use split(): set.seed(1) u = runif(150, 0, 10) grp = sample(letters[1:5], 150, rep=TRUE) split(u, grp) b _______________________________________________ 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.

Eu tenho a preferencia de fazer tudo a mao, mas vc pode usar: library(car) table(recode(x, "c('Abobrinha', 'Avião')='Abobrinha ou Avião'; 'Cachorro'='Cachorro'; 'Carro'='Carro'")) b
participantes (3)
-
Benilton Carvalho
-
Henrique Dallazuanna
-
Leandro Marino