Cara memperbaikinya di r: fungsi agregat hilang, defaultnya adalah "panjang"
Kesalahan yang mungkin Anda temui saat menggunakan R adalah:
Aggregation function missing: defaulting to length
Kesalahan ini terjadi ketika Anda menggunakan fungsi dcast dalam paket reshape2 untuk mengonversi bingkai data dari format panjang ke format lebar , namun beberapa nilai dapat ditempatkan di sel individual bingkai data lebar.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki kerangka data berikut di R yang berisi informasi tentang penjualan berbagai produk:
#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
Sekarang misalkan kita mencoba menggunakan fungsi dcast untuk mengubah bingkai data dari format panjang ke format lebar:
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
Perhatikan bahwa fungsi dcast berfungsi tetapi kami menerima pesan peringatan Fungsi Agregat Hilang .
Bagaimana cara memperbaiki kesalahan tersebut
Alasan kami menerima pesan peringatan adalah karena untuk setiap kombinasi toko dan produk , terdapat dua nilai potensial yang dapat kami gunakan untuk penjualan .
Misalnya untuk toko A dan produk 1, nilai penjualannya bisa 12 atau 29.
Jadi fungsi dcast defaultnya adalah “panjang” sebagai fungsi agregasinya.
Misalnya, database besar memberi tahu kita bahwa untuk toko A dan produk 1, terdapat total 2 nilai penjualan.
Jika Anda ingin menggunakan fungsi agregasi yang berbeda, Anda dapat menggunakan fun.aggregate .
Misalnya, kita dapat menggunakan sintaks berikut untuk menghitung jumlah penjualan berdasarkan toko dan produk :
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
Berikut cara menginterpretasikan nilai dalam bingkai data besar:
- Jumlah penjualan toko A dan produk 1 adalah 41 .
- Jumlah penjualan toko A dan produk 2 adalah 38 .
- Jumlah penjualan toko B dan produk 1 adalah 45 .
- Jumlah penjualan toko B dan produk 2 adalah 33 .
Perhatikan bahwa kali ini kami tidak menerima pesan peringatan apa pun karena kami menggunakan argumen fun.aggregate .
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:
Cara memperbaikinya di R: konstanta string yang tidak terduga
Cara memperbaiki di R: Rumus template tidak valid di ExtractVars
Cara memperbaikinya di R: argumen bukan numerik atau logis: return na