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