[R-br] ordenar linhas, separar elementos e contar elementos

Augusto Ribas ribas.aca em gmail.com
Domingo Fevereiro 24 20:02:41 BRT 2013


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/<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/0994c9c7/attachment.html>


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