[R-br] ordenar linhas, separar elementos e contar elementos
Augusto Ribas
ribas.aca em gmail.com
Domingo Fevereiro 24 23:23:17 BRT 2013
Assim, você conseguiu abrir os dados no R?
No meu exemplo em acima, daria para usar o comando
dput(dados)
Que o R vai falar:
> dput(dados)
structure(list(cidades = structure(c(2L, 6L, 3L, 7L, 8L, 1L,
4L, 5L, 9L, 10L), .Label = c("a", "h", "j", "k", "q", "t", "u",
"w", "x", "z"), class = "factor"), pib = c(1.71506498688328,
0.460916205989202, -1.26506123460653, -0.686852851893526,
-0.445661970099958,
1.22408179743946, 0.359813827057364, 0.400771450594052, 0.11068271594512,
-0.555841134754075), hab = c(117, 104, 80, 92, 89, 96, 92, 110,
98, 88)), .Names = c("cidades", "pib", "hab"), row.names = c(NA,
-10L), class = "data.frame")
>
Note que se eu digitar no R esse structure(.....) ele vai recriar o
data.frame.
Então o trabalho vai ser copiar aqui na mensagem, colar no R, e ja da para
ver a planilha como é.
E como é so copiar e colar, é fácil fazer isso.
Mas a sua planilha é gigante, então vc poderia fazer o seguinte, ao invés
de dar dput() nela inteira, use por exemplo as 50 primeiras linhas
Algo como dput(dados[1:50,])
Ai vc apresenta so algumas linhas, pode ser até menos, e da para testar
soluções ja para o seu conjunto de dados, não algo que eu imaginei que pelo
visto não bate com os seus dados.
Do jeito que esta é meio complicado para ler, pelo menos eu tenho
dificuldade, não sei como proceder para ler facilmente.
Mas tente usar o comando dput, e poste algumas linhas, umas 50 da sua
planilha, que da para adaptar aquela solução para vc. ou alguém pode propor
algo melhor e mais eficiente ainda.
Em 24 de fevereiro de 2013 19:25, Manoel Nascimento <
manoelnascimento em gmail.com> escreveu:
> Olá Augusto,
>
> me desculpe por não enviar uma amostragem. Vai abaixo:
>
> Municípios,População (2010),Ranking populacional,PIB 2006 (R$ 1.000),PIB
> 2007 (R$ 1.000),PIB 2008 (R$ 1.000),PIB 2009 (R$ 1.000),PIB 2010 (R$
> 1.000),Ranking PIB,PIB per capita (R$),Ranking PIB per capita
> São Paulo -
> SP,11.253.503,1º,282.892.455,323.154.666,356.980.045,389.284.929,443.600.102,1º,39.451,141º
> Rio de Contas -
> BA,13.007,2.462º,128.026.084,140.094.694,158.757.286,170.517.226,190.249.043,2º,3.970,5.075º
> Brasília -
> DF,2.570.160,4º,89.628.553,99.945.620,117.571.878,131.487.268,149.906.319,3º,24.569,484º
> Curitiba -
> PR,1.751.907,8º,32.182.599,38.124.861,43.354.307,45.741.463,53.106.497,4º,58.489,69º
> Belo Horizonte -
> MG,2.375.151,6º,32.473.102,38.285.100,42.255.583,44.729.413,51.661.760,5º,15.161,1.446º
> Manari -
> PE,18.083,1.831º,31.801.795,34.384.768,38.028.945,40.482.809,48.598.153,6º,21.748,646º
> Porto Acre -
> AC,14.880,2.184º,30.130.789,33.590.020,35.844.547,36.873.055,43.038.100,7º,8.111,3.230º
> Guarulhos -
> SP,1.221.979,13º,25.697.978,27.558.277,31.936.895,32.475.487,37.139.404,8º,30.400,282º
> Fortaleza -
> CE,2.452.185,5º,22.331.722,24.476.378,28.769.259,31.373.473,37.106.309,9º,6.193,3.742º
> Salto Veloso -
> SC,4.301,4.539º,24.139.423,26.772.417,29.393.081,33.131.342,36.744.670,10º,9.239,2.932º
> Campinas -
> SP,1.080.113,14º,23.629.697,26.767.620,29.303.152,31.653.414,36.688.629,11º,4.889,4.378º
> Ortigueira -
> PR,23.380,1.396º,17.798.886,24.619.373,30.067.523,31.617.716,36.389.080,12º,18.777,892º
> São Bernardo do Campo -
> SP,765.463,23º,20.566.795,25.164.098,29.981.271,28.935.628,35.578.586,13º,30.383,284º
> Rebouças -
> PR,14.176,2.280º,18.316.659,20.689.607,22.470.886,24.720.436,30.032.003,14º,33.940,203º
> Betim -
> MG,378.089,57º,18.807.187,21.522.757,25.281.114,24.974.495,28.297.360,15º,17.704,1.024º
> Barueri -
> SP,240.749,105º,25.570.470,26.076.920,27.143.412,26.909.802,27.752.428,16º,10.342,2.662º
>
> Estas são algumas das primeiras linhas, pois trata-se de uma tabela CSV
> com os 5.565 municípios brasileiros. A solução apresentada serve para este
> tipo de dados?
>
> []'s
> Manolo
>
> Em 24-02-2013 20:02, Augusto Ribas escreveu:
>
> Ola, lembre-se de ler o guia de postagem, como eu não tenho muita ideia de
> como são seus dados, se fatores ou números, eu vou dar um exemplo do que
> imaginei, mas respostas melhores poderiam surgir se vc posta-se dados de
> exemplo.
>
>
> #Criando dados de exemplo, para as pessoas entenderem como são seus dados
> #Escolhendo uma semente para o exemplo ser reproduzivel
> > set.seed(123)
> >
> dados<-data.frame(cidades=sample(letters,10),pib=rnorm(10),hab=rpois(10,100))
>
> #exemplo dos dados, eu imagino que tudo são numeros, se são palavras,
> classes, tera que pensar de outra forma.
> > dados
> cidades pib hab
> 1 h 1.7150650 117
> 2 t 0.4609162 104
> 3 j -1.2650612 80
> 4 u -0.6868529 92
> 5 w -0.4456620 89
> 6 a 1.2240818 96
> 7 k 0.3598138 92
> 8 q 0.4007715 110
> 9 x 0.1106827 98
> 10 z -0.5558411 88
>
> #primeiro de uma olhada na função order ?order, mas vc pode usar ela para
> organiza numeros, por exemplo o pib assim
> > order(dados$pib)
> [1] 3 4 10 5 9 7 8 2 6 1
>
> #veja que assim temos a ordem, como é a ordem descrecente, é usa usar o
> reverso, ou pode reverter a ordem direto pela função usando o argumento
> decreaseing
>
> > dados[rev(order(dados$pib)),]
> cidades pib hab
> 1 h 1.7150650 117
> 6 a 1.2240818 96
> 2 t 0.4609162 104
> 8 q 0.4007715 110
> 7 k 0.3598138 92
> 9 x 0.1106827 98
> 5 w -0.4456620 89
> 10 z -0.5558411 88
> 4 u -0.6868529 92
> 3 j -1.2650612 80
>
> #veja que a tabela ja esta no oderm do maior para o menor pib, agora como
> so queremos os 5 primeiro so usamos os 5 primeiros valores
> > dados[rev(order(dados$pib))[1:5],]
> cidades pib hab
> 1 h 1.7150650 117
> 6 a 1.2240818 96
> 2 t 0.4609162 104
> 8 q 0.4007715 110
> 7 k 0.3598138 92
>
> #Agora podemos colocar de alguma forma, aqui eu coloquei como um segundo
> conjunto de dados o que me interessa
> > dados2<-dados[rev(order(dados$pib))[1:5],]
> > dados2
> cidades pib hab
> 1 h 1.7150650 117
> 6 a 1.2240818 96
> 2 t 0.4609162 104
> 8 q 0.4007715 110
> 7 k 0.3598138 92
>
> #ai agora eu separei valores somente maiores de 100 para o numero de
> habitantes
> > dados2[dados2$hab>100,]
> cidades pib hab
> 1 h 1.7150650 117
> 2 t 0.4609162 104
> 8 q 0.4007715 110
>
> #e feito isso seria so contar o número de linhas
> > nrow(dados2[dados2$hab>100,])
> [1] 3
> >
>
>
> Isso é uma ideia, mas provavelmente existem mil maneiras de fazer isso no
> R.
> Mas lembre-se de sempre dar um exemplo de dados, para as pessoas poderem
> propor soluções mais eficases para voce.
>
> Espero ter ajudado
>
> []s
> Augusto Ribas
>
> Em 24 de fevereiro de 2013 16:28, Manoel Nascimento <
> manoelnascimento em gmail.com> escreveu:
>
>> Olá!
>>
>> Estou precisando fazer uma operação que deve ser supersimples, mas que
>> como bom novato em R não sei fazer sem me embananar todo.
>>
>> Tenho uma tabela com as seguintes colunas:
>>
>> Municípios População..2010. Ranking.populacional
>> PIB.2006..R..1.000. PIB.2007..R..1.000. PIB.2008..R..1.000.
>> PIB.2009..R..1.000. PIB.2010..R..1.000. Ranking.PIB
>> PIB.per.capita..R.. Ranking.PIB.per.capita
>>
>> Ela mostra os municípios brasileiros, sua população em 2010, o ranking
>> populacional de cada município, seu PIB entre 2006 e 2010, seu ranking
>> de PIB, o PIB per capita e seu ranking de acordo com o PIB per capita.
>>
>> As operações que preciso fazer são as seguintes:
>>
>> a) Ordenar as cidades em ordem decrescente, do maior para o menor PIB;
>> b) Separar as mil cidades com maior PIB, e as mil cidades com menor PIB;
>> c) Em cada um destes dois subconjuntos (cidades com maior PIB e cidades
>> com menor PIB), contar quantas cidades há com mais e com menos de 100
>> mil habitantes.
>>
>> Como faço isto?
>>
>> []'s
>> Manolo
>> _______________________________________________
>> 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.
>>
>
>
>
> --
> Grato
> Augusto C. A. Ribas
>
> Site Pessoal: http://recologia.wordpress.com/
> Lattes: http://lattes.cnpq.br/7355685961127056
>
>
> _______________________________________________
> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://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.
>
--
Grato
Augusto C. A. Ribas
Site Pessoal: http://recologia.wordpress.com/<http://augustoribas.heliohost.org>
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130224/9fddaaab/attachment.html>
Mais detalhes sobre a lista de discussão R-br