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 を返す

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です