Como combinar linhas com os mesmos valores de coluna em r


Você pode usar a seguinte sintaxe básica para combinar linhas com os mesmos valores de coluna em um quadro de dados em R:

 library (dplyr)

df %>%
  group_by(group_var1, group_var2) %>%
  summarise(across(c(values_var1, values_var2), sum))

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Combine linhas com os mesmos valores de coluna em R

Suponha que temos o seguinte quadro de dados contendo informações sobre vendas e devoluções feitas por diversos funcionários de uma empresa:

 #create data frame
df <- data. frame (id=c(101, 101, 102, 103, 103, 103),
                 employee=c('Dan', 'Dan', 'Rick', 'Ken', 'Ken', 'Ken'),
                 sales=c(4, 1, 3, 2, 5, 3),
                 returns=c(1, 2, 2, 1, 3, 2))

#view data frame
df

   id employee sales returns
1 101 Dan 4 1
2 101 Dan 1 2
3 102 Rick 3 2
4 103 Ken 2 1
5 103 Ken 5 3
6 103 Ken 3 2

Podemos usar a seguinte sintaxe para combinar linhas que possuem o mesmo valor nas colunas id e Employee e, em seguida, agregar as colunas restantes:

 library (dplyr)

#combine rows with same value for id and employee and aggregate remaining columns
df %>%
  group_by(id, employee) %>%
  summarise(across(c(sales, returns), sum))

# A tibble: 3 x 4
#Groups: id[3]
     id employee sales returns
          
1 101 Dan 5 3
2 102 Rick 3 2
3 103 Ken 10 6

O resultado é um quadro de dados que combina todas as linhas do quadro de dados original que tinham o mesmo valor nas colunas ID e Funcionário e, em seguida, calcula a soma dos valores nas colunas Vendas e Devoluções .

Nota : Optamos por agregar as colunas de vendas e devoluções usando a função soma , mas você pode agregar por outra métrica, como média, se desejar.

Relacionado: Como usar a função across() em dplyr

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como combinar listas em R
Como combinar dois vetores em R
Como combinar dois quadros de dados em R com colunas diferentes

Add a Comment

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