R'de nasıl düzeltilir: toplama işlevi eksik, varsayılan olarak "uzunluk" ayarlanıyor


R kullanırken karşılaşabileceğiniz bir hata:

 Aggregation function missing: defaulting to length

Bu hata, bir veri çerçevesini uzun formattan geniş formata dönüştürmek için reshape2 paketindeki dcast işlevini kullandığınızda ortaya çıkar ancak geniş veri çerçevesinin tek tek hücrelerine birden çok değer yerleştirilebilir.

Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.

Hata nasıl yeniden oluşturulur?

R’de çeşitli ürünlerin satışlarıyla ilgili bilgileri içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:

 #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

Şimdi veri çerçevesini uzun formattan geniş formata dönüştürmek için dcast fonksiyonunu kullanmaya çalıştığımızı varsayalım:

 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

Dcast işlevinin çalıştığını ancak Toplama İşlevi Eksik uyarı mesajını aldığımızı unutmayın.

Hata nasıl düzeltilir?

Uyarı mesajı almamızın nedeni, her mağaza ve ürün kombinasyonu için satışta kullanabileceğimiz iki potansiyel değerin olmasıdır.

Örneğin A mağazası ve 1. ürün için satış değeri 12 veya 29 olabilir.

Dolayısıyla dcast işlevi, toplama işlevi olarak varsayılan olarak “uzunluk”a ayarlanır.

Örneğin, büyük veritabanı bize A mağazası ve 1. ürün için toplam 2 satış değeri olduğunu söylüyor.

Bunun yerine farklı bir toplama işlevi kullanmak istiyorsanız fun.aggregate öğesini kullanabilirsiniz.

Örneğin, mağaza ve ürüne göre satışların toplamını hesaplamak için aşağıdaki sözdizimini kullanabiliriz:

 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

Büyük veri çerçevesindeki değerlerin nasıl yorumlanacağı aşağıda açıklanmıştır:

  • A mağazası ile 1 numaralı ürünün satışlarının toplamı 41’dir .
  • A mağazası ile 2 numaralı ürünün satışlarının toplamı 38 dir.
  • B mağazası ile 1. ürünün satışlarının toplamı 45’tir .
  • B mağazası ile 2 numaralı ürünün satışlarının toplamı 33’tür .

fun.aggregate argümanını kullandığımız için bu sefer herhangi bir uyarı mesajı almadığımızı unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

R’de nasıl düzeltilir: beklenmeyen dize sabiti
R’de nasıl düzeltilir: ExtractVars’ta geçersiz şablon formülü
R’de nasıl düzeltilir: argüman ne sayısal ne de mantıksal: return na

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir