Como selecionar os primeiros n valores por grupo em r


Você pode usar qualquer um dos seguintes métodos para selecionar os N valores principais por grupo em R:

Método 1: Selecione os primeiros N valores por grupo (ignore empates)

 library (dplyr)

#select top 5 values by group
df %>% 
  arrange(desc(values_column)) %>% 
  group_by(group_column) %>%
  slice(1:5)

Método 2: selecione os primeiros N valores por grupo (inclui empates)

 library (dplyr)

#select top 5 values by group
df %>%
  group_by(group_column) %>%
  top_n(5, values_column)

Os exemplos a seguir mostram como usar cada método com o seguinte quadro de dados em R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(19, 22, 15, NA, 14, 25, 25, 25),
                 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12))

#view data frame
df

  team points rebounds
1 A 19 10
2 to 22 6
3 to 15 3
4 A NA 7
5 B 14 11
6 B 25 13
7 B 25 9
8 B 25 12

Exemplo 1: selecione os primeiros N valores por grupo (ignore empates)

O código a seguir mostra como selecionar as 2 primeiras linhas com os valores de pontos mais altos, agrupadas por equipe:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>% 
  arrange(desc(points)) %>% 
  group_by(team) %>%
  slice(1:2)

# A tibble: 4 x 3
# Groups: team [2]
  team points rebounds
        
1 to 22 6
2 A 19 10
3 B 25 13
4 B 25 9

O resultado contém as duas linhas com os maiores valores de pontos para cada equipe.

Observe que para o Time B, havia na verdade três linhas empatadas no valor mais alto ( 25 ), mas apenas duas linhas são retornadas na saída.

Este método simplesmente ignora os links.

Exemplo 2: selecione os primeiros N valores por grupo (inclui empates)

O código a seguir mostra como selecionar as 2 primeiras linhas com os valores de pontos mais altos, agrupadas por equipe:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>%
  group_by(team) %>%
  top_n(2, dots)

# A tibble: 5 x 3
# Groups: team [2]
  team points rebounds
        
1 A 19 10
2 to 22 6
3 B 25 13
4 B 25 9
5 B 25 12

O resultado contém as duas linhas com os maiores valores de pontos para cada equipe.

Observe que para o Time B, três linhas foram empatadas para o valor de pontuação mais alto ( 25 ), então este método incluiu essas três linhas no resultado final.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em R:

Como selecionar linhas onde o valor aparece em qualquer coluna em R
Como selecionar colunas específicas em R
Como selecionar colunas por índice em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *