Como corrigir em r: função agregada ausente, o padrão é “comprimento”


Um erro que você pode encontrar ao usar R é:

 Aggregation function missing: defaulting to length

Este erro ocorre quando você usa a função dcast no pacote reshape2 para converter um quadro de dados de um formato longo para um formato largo , mas vários valores podem ser colocados nas células individuais do quadro de dados largo.

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que temos o seguinte quadro de dados em R que contém informações sobre vendas de vários produtos:

 #create data frame
df <- data. frame (store=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 promotion=c('Y', 'Y', 'N', 'N', 'Y', 'Y', 'N', 'N'),
                 product=c(1, 2, 1, 2, 1, 2, 1, 2),
                 sales=c(12, 18, 29, 20, 30, 11, 15, 22))

#view data frame
df

  store promotion product sales
1 AY 1 12
2 AY 2 18
3 YEAR 1 29
4 YEAR 2 20
5 BY 1 30
6 BY 2 11
7 BN 1 15
8 BN 2 22

Agora suponha que tentamos usar a função dcast para converter o quadro de dados do formato longo para o formato largo:

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ")

#view result
df_wide

Aggregation function missing: defaulting to length
  store 1 2
1 to 2 2
2 B 2 2

Observe que a função dcast funciona, mas recebemos a mensagem de aviso Aggregate Function Missing .

Como corrigir o erro

A razão pela qual recebemos uma mensagem de aviso é porque para cada combinação de loja e produto , existem dois valores potenciais que poderíamos usar para vendas .

Por exemplo, para a loja A e o produto 1, o valor de vendas poderia ser 12 ou 29.

Portanto, o padrão da função dcast é “comprimento” como sua função de agregação.

Por exemplo, o grande banco de dados nos diz que para a loja A e o produto 1, há um total de 2 valores de vendas.

Se quiser usar uma função de agregação diferente, você pode usar fun.agregate .

Por exemplo, podemos usar a seguinte sintaxe para calcular a soma das vendas por loja e produto :

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ", fun. aggregate =sum)

#view result
df_wide

  store 1 2
1 A 41 38
2 B 45 33

Veja como interpretar os valores no grande quadro de dados:

  • A soma das vendas da loja A e do produto 1 é 41 .
  • A soma das vendas da loja A e do produto 2 é 38 .
  • A soma das vendas da loja B e do produto 1 é 45 .
  • A soma das vendas da loja B e do produto 2 é 33 .

Observe que desta vez não recebemos nenhuma mensagem de aviso porque usamos o argumento fun.gregate .

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns no R:

Como corrigir em R: constante de string inesperada
Como corrigir em R: fórmula de modelo inválida em ExtractVars
Como consertar em R: o argumento não é numérico nem lógico: return na

Add a Comment

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