Como Classificar em R usando a função order()

Neste tutorial, você aprenderá a classificar em R usando a order(). Abordaremos como classificar vetores usando diferentes parâmetros, classificando dataframes e muito mais.

R fornece uma maneira diferente de classificar os dados em ordem crescente ou decrescente; Os analistas de dados e os cientistas de dados usam a order(), sort() e os pacotes dplyr para classificar os dados dependendo da estrutura dos dados obtidos.

A order() pode classificar vetor, matriz e também um quadro de dados e pode ser classificado em ordem crescente e decrescente com sua ajuda, que é mostrada na seção final deste tutorial.

A função order() em R

A função order() em R é muito útil na classificação de valores de dados específicos de acordo com uma variável específica. alterar a ordem dos valores ou elementos presentes em um quadro de dados ou vetor é muito eficaz na análise de dados.

Sintaxe de order()

A sintaxe da order() é mostrada abaixo:

order(x, decreasing = TRUE or FALSE, na.last = TRUE or FLASE, method = c("auto", "shell", "quick", "radix"))

O argumento acima order() afirma que:

  • X: frames de dados, matrizes ou vetores.
  • Decreasing (decrescente): valor boolean; TRUE classificação em ordem decrescente ou FALSE para classificação em ordem crescente.
  • na.last: valor boolean; TRUE os índices de NA são colocados por último ou os índices FLASE THEN NA são colocados primeiro.
  • Method (método): método de classificação a ser usado.

Classificar em R usando a ordem()

Vejamos um exemplo de order() em ação. Abaixo, o código contém a variável x, que inclui um vetor com uma lista de números. Os números são ordenados de acordo com seu índice usando a order(x).

y = c(4,12,6,7,2,9,5)
order(y)

O código acima fornece a seguinte saída:

5 1 7 3 4 6 2

Aqui, a order() irá classificar os números fornecidos de acordo com seu índice em ordem crescente. O número 2 é o menor, tem um índice de 5 e o número 4 é o índice 1 e, da mesma forma, o processo avança no mesmo padrão.

y = c(4,12,6,7,2,9,5)
y[order(y)]

O código acima fornece a seguinte saída:

2 4 5 6 7 9 12

Aqui, a indexação da ordem é feita onde os valores reais são impressos em ordem crescente. Os valores são ordenados de acordo com o índice usando order(), após cada valor acessado usando y[some-value].

Classificando vetor usando diferentes parâmetros em order()

Vejamos um exemplo em que os conjuntos de dados contêm o valor como símbolo NA (não disponível).

order(x,na.last=TRUE)

x <- c(8,2,4,1,-4,NA,46,8,9,5,3)
order(x,na.last = TRUE)

O código acima fornece a seguinte saída:

5 4 2 11 3 10 1 8 9 7 6

Aqui, a order() também classificará a lista de números fornecida de acordo com seu índice em ordem crescente. Uma vez que NA está presente, seu índice será colocado em último lugar, onde 6 será colocado por último por causa de na.last=TRUE .

order(x,na.last=FALSE)

order(x,na.last=FALSE)

O código acima fornece a seguinte saída:

6 5 4 2 11 3 10 1 8 9 7

Aqui, a order() também classificará a lista de números fornecida de acordo com seu índice em ordem crescente. Como NA está presente, seu índice, que é 6, será colocado em primeiro lugar por causa de na.last=FALSE .

order(x,decreasing=TRUE,na.last=TRUE)

order(x,decreasing=TRUE,na.last=TRUE)

O código acima fornece a seguinte saída:

7 9 1 8 10 3 11 2 4 5 6

Aqui a order(), classificará uma determinada lista de números de acordo com seu índice em ordem decrescente devido a decreasing=TRUE : 46. O maior é colocado no índice 7 e os outros valores são organizados de maneira decrescente. Como NA está presente, o índice 6 será colocado em último lugar por causa de na.last=TRUE .

order(x,decreasing=FALSE,na.last=FALSE)

order(x,decreasing=FALSE,na.last=FALSE)

O código acima fornece a seguinte saída:

6 5 4 2 11 3 10 1 8 9 7

Aqui NA está presente, cujo índice é 6 será colocado em primeiro lugar por causa de na.last=FALSE. A order() classificará uma determinada lista de números de acordo com seu índice em ordem crescente por causa de decreasing=FALSE: -4, que é o menor colocado no índice 5, e os outros valores são organizados cada vez mais.

Classificando um dataframe usando a order()

Vamos criar um dataframe onde o valor da população é 10. A variável gênero consiste em valores vetoriais ‘masculino (male)’ e ‘feminino (female)’ onde os valores de amostra 10 podem ser obtidos com a ajuda de sample() , enquanto replace=TRUE irá gerar apenas os valores únicos. Da mesma forma, a idade consiste em um valor de 25 a 75, junto com um grau de valor possível como c (“MA,” “ME,” “BE,” “BSCS”), que novamente gerará valores únicos.

Tarefa: Classifique os dados fornecidos em ordem crescente com base na idade da população fornecida.

Nota: Os dados de amostra exibidos podem ser diferentes enquanto você tenta usá-los em sua máquina local, porque cada vez que um código é executado, um dataframe exclusivo é criado.

population = 10
gender=sample(c("male","female"),population,replace=TRUE)
age = sample(25:75, population, replace=TRUE)
degree = sample(c("MA","ME","BE","BSCS"), population, replace=TRUE)
(final.data = data.frame(gender=gender, age=age, degree=degree))
Classificar em R usando a ordem () - imagem 1

O código acima fornece a seguinte saída, que mostra um dataframe recém-criado.

OBS: Na imagem acima coloquei em português os gêneros para facilitar o entendimento, mas, ao classificar em R usando a ordem(), não esqueça, o masculino deve ser “male” e o feminino “female”, como no código abaixo:

   gender       age        degree
   male         40           MA
   female       57          BSCS
   male         66           BE
   female       61          BSCS
   female       48           MA
   male         25           MA
   female       49           BE
   male         52           ME
   female       57           MA
   female       35           MA

Agora vamos classificar o dataframe em ordem crescente usando com a order() base na variável idade.

order(final.data$age)

O código acima fornece a seguinte saída:

6 10 3 9 5 8 4 2 7 1

Como a idade de 25 está no índice 6, seguida pela idade de 35 no índice 10, todos os valores relacionados à idade estão organizados em ordem crescente.

O código abaixo contém a ordem[] com a variável idade, é usado para organizar em ordem crescente onde o gênero, junto com a informação do grau, também é impresso.

final.data[order(final.data$age),]
Classificar em R usando a order() - imagem 2

OBS: Na imagem acima coloquei em português os gêneros para facilitar o entendimento, mas, ao classificar em R usando a ordem(), não esqueça, o masculino deve ser “male” e o feminino “female”, como no código abaixo:

     gender    age    degree
6     male     25       MA
10   female    35       MA
1     male     40       MA
5    female    48       MA
7    female    49       BE
8     male     52       ME
2    female    57      BSCS
9    female    57       MA
4    female    61      BSCS
3     male     66       BE

A saída acima mostra que a idade é organizada em ordem crescente junto com o gênero correspondente e as informações de grau são obtidas.

Classificação de dados

Para classificar um quadro de dados em R, use a função order() . Por padrão, a classificação é ASCENDING. Anexe a variável de classificação por um sinal de menos para indicar a ordem DESCENDENTE. Aqui estão alguns exemplos.

classificando exemplos usando o conjunto de dados mtcars

attach(mtcars)

ordenar por mpg

newdata <- mtcars[order(mpg),]

ordenar mpg and cyl

newdata <- mtcars[order(mpg, cyl),]

ordenar por mpg (crescente) e cyl (decrescente)

newdata <- mtcars[order(mpg, -cyl),]

detach(mtcars)

Casos de uso para a função order()

Você pode usar a função order() também para classificar um dataframe.
O comando sort pode ser usado para criar um novo vetor a partir de qualquer vetor de valores comparáveis ​​em um vetor organizado em uma sequência ascendente.

A ordem de classificação padrão é crescente, mas existem opções para torná-la decrescente, bem como opções para lidar com valores indefinidos e especificar um método de classificação.


Quando você lê dados de um sistema de arquivos em um quadro de dados ou constrói o quadro de dados no código, tem uma estrutura que contém linhas e colunas de dados que podem ser de tipos diferentes.

Para “classificar” a linha do quadro de dados por valores de coluna, seja uma única coluna ou várias colunas, você deve usar o comando order, pois o comando sort classifica apenas vetores.

Para ver como isso funciona, o exemplo abaixo constrói um quadro de dados a partir de dados brutos carregados em vetores. Esses dados poderiam facilmente ter sido lidos de um CSV ou outro arquivo de texto formatado.

Nota: colocar a última instrução entre parênteses faz com que o quadro de dados seja referenciado pela variável test.data e exibe o que está na variável test.data . O primeiro inteiro no display é um identificador de contador atribuído por R às linhas no quadro de dados.

tamanho = 5 
sexo = amostra (c ("masculino", "feminino"), tamanho, substituir = T) 
idade = amostra (21: 100, tamanho, substituir = T) 
grau = amostra (c ("BA", "BS "," MS "," MBA "), tamanho, substituir = T) 
(test.data = data.frame (sexo = sexo, idade = idade, grau = grau))
sexo idade grau 
1 feminino 30 BA 
2 masculino 49 BA 
3 masculino 39 MBA 
4 masculino 27 MS 
5 masculino 61 MS

Podemos classificar os dados por idade usando o comando order . A função de ordem recebe o nome da coluna a ser ordenada e a ordem é crescente. O resultado do comando de uma ordem é um vetor, onde cada valor faz referência ao valor da posição do item no quadro de dados original e ele, ele mesmo, está localizado na posição dos dados classificados.

Ficou confuso, vou explicar…

Por exemplo, a 1ª idade no quadro de dados original é 30 e no quadro de dados classificado 30 estará na 2ª posição. Portanto, o valor 1 está localizado na 2ª posição do vetor de ordem.

Depois que o vetor de ordem é obtido, ele é usado para extrair dados do test.data original . Você pode ver o ID do contador original no resultado e como ele corresponde ao vetor de ordem usado para fazer a classificação. R extrai dados de um quadro de dados (ou matriz) usando os colchetes com uma designação de Linha, Coluna.

pedido (test.data $ age) 
[1] 4 1 3 2 5
test.data [pedido (test.data $ idade),] 
sexo idade grau 
4 masculino 27 MS 
1 feminino 30 BA 
3 masculino 39 MBA 
2 masculino 49 BA 
5 masculino 61 MS

O quadro de dados pode ser classificado em ordem decrescente usando o sinal negativo na frente do nome da coluna especificado pelo comando de pedido.

pedido (-test.data $ age) 
[1] 5 2 3 1 4
test.data [pedido (-test.data $ age),]
5 masculino 61 MS 
2 masculino 49 BA 
3 masculino 39 MBA 
1 feminino 30 BA 
4 masculino 27 MS

Também podemos fornecer classificações de várias colunas adicionando várias colunas ao comando de pedido.

pedido (test.data $ degree, -test.data $ age) 
[1] 2 1 3 5 4 
test.data [pedido (test.data $ degree, -test.data $ age),]
sexo idade grau 
2 masculino 49 BA 
1 feminino 30 BA 
3 masculino 39 MBA 
5 masculino 61 MS 
4 masculino 27 MS

Casos de uso da função order() para classificação

Você pode usar a função de classificação para criar um valor que representa a posição relativa de um valor em sua sequência. Por exemplo, abaixo vamos listar as 10 principais linguagens de programação para 2020 de nosso blog:

(language.blog = read.csv (file = "language-scores.csv")) 
    X pontuação de linguagem 
1 2 C 99,7 
2 5 C # 87,7 
3 4 C ++ 97,1 
4 9 Go 75,1 
5 3 Java 99,5 
6 7 JavaScript 85,6 
7 8 PHP 81,2 
8 1 Python 100,0 
9 6 R 87,7 
10 10 Swift 73,1

Podemos obter um vetor dos dados classificados. Os dados no vetor de classificação aparecem como flutuantes porque há um empate: C # está empatado com R no 5º e 6º lugares.

Existem opções para lidar com empates na função de classificação, mas o padrão é usar o método da “média” e atribuir a cada um o valor médio. Os próprios valores representam a ordem decrescente do valor correspondente por posição do valor no conjunto de dados original. Um valor de classificação mais alto representa um valor de dados maior.

rank (language.blog $ score) 
9,0 5,5 7,0 2,0 8,0 4,0 3,0 10,0 5,5 1,0

Posso ainda usar o vetor de classificação para ordenar os dados por classificação, ou seja, a ordem decrescente das pontuações, fornecendo a classificação negativa ao comando de ordem.

language.blog [order (-rank (language.ieee $ score)),] 
    X pontuação de linguagem 
8 1 Python 100,0 
1 2 C 99,7 
5 3 Java 99,5 
3 4 C ++ 97,1 
2 5 C # 87,7 
9 6 R 87,7 
6 7 JavaScript 85,6 
7 8 PHP 81,2 
4 9 Go 75,1 
10 10 Swift 73,1

O cálculo da classificação não é usado apenas para dados de ordenação. A correlação de classificações pode ser usada para testar a hipótese nula da relação entre duas variáveis. Visto que a variável pode diferir em tipo e escala, a classificação fornece uma espécie de normalização.

Conclusão

R é uma linguagem de programação estatística com muitas funções que ajudam na formatação e processamento de dados. Seus serviços são disponibilizados por meio de chamadas de função.

Além de ler a documentação, é útil executar conjuntos de dados por meio dessas funções para ajudar a descobrir o que exatamente eles fazem. Sort, Order e Rank são semanticamente iguais, mas na prática eles têm usos muito diferentes e às vezes trabalham uns com os outros para atingir o resultado desejado.

Se você está aprendendo R, mais cedo ou mais tarde vai se deparar com as funções sort, rank e a função order(). Como há similaridade e até mesmo sobreposição na semântica, surgem questões: o que exatamente cada um faz e quais são os casos de uso para cada um?

Todas as três funções requerem que os valores nos quais operam sejam comparáveis. As comparações em R podem ser aplicadas a tipos de data string, numéricos, complexos e lógicos.

Você aprendeu aqui sobre classificação usando a função de order() com seu argumento com os exemplos e vetor de classificação usando parâmetros diferentes e o exemplo final, que contém a classificação do dataframe.

Agora é só treinar e colocar em prática nos seus próximos projetos.

Compartilhe

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp
Share on print
imprimir
Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on print

O que achou deste artigo?

Leia também