R での修正方法: 集計関数が欠落しており、デフォルトは「length」になります
R を使用するときに発生する可能性のあるエラーは次のとおりです。
Aggregation function missing: defaulting to length
このエラーは、 reshape2パッケージのdcast関数を使用してデータ フレームをロング フォーマットからワイド フォーマットに変換するときに発生しますが、ワイド データ フレームの個々のセルに複数の値を配置できます。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
R に、さまざまな製品の販売に関する情報を含む次のデータ フレームがあるとします。
#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
ここで、 dcast関数を使用してデータ フレームをロング フォーマットからワイド フォーマットに変換しようとするとします。
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 関数は機能しますが、 「集計関数が見つかりません」という警告メッセージが表示されることに注意してください。
エラーを修正する方法
警告メッセージが表示される理由は、店舗と製品の組み合わせごとに、販売に使用できる潜在的な値が 2 つあるためです。
たとえば、店舗 A と製品 1 の場合、売上高は 12 または 29 になります。
したがって、 dcast関数は、デフォルトで集計関数として「length」を使用します。
たとえば、大規模なデータベースから、店舗 A と製品 1 には合計2 つの売上値があることがわかります。
代わりに別の集計関数を使用したい場合は、 fun.aggregate を使用できます。
たとえば、次の構文を使用して、店舗別および製品別の売上の合計を計算できます。
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
大きなデータ フレームの値を解釈する方法は次のとおりです。
- 店舗 A と製品 1 の売上の合計は41です。
- 店舗 A と製品 2 の売上の合計は38です。
- 店舗 B と製品 1 の売上の合計は45です。
- 店舗 B と製品 2 の売上の合計は33です。
今回はfun.aggregate引数を使用したため、警告メッセージが表示されないことに注意してください。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを修正する方法について説明します。
R での修正方法: 予期しない文字列定数
R での修正方法: ExtractVars の無効なテンプレート式
R で修正する方法: 引数が数値でも論理でもない: na を返す