data.tableをグループごとに要約します

thiagoveloso

私は、さまざまなソースによって取得された、複数の場所の温度の月次測定値を含むRの巨大なデータテーブルを使用しています。

データセットは次のようになります。

library(data.table)

# Generate random data:
loc <- 1:10
dates <- seq(as.Date("2000-01-01"), as.Date("2004-12-31"), by="month")
mods <- c("A","B", "C", "D", "E")
temp <- runif(length(loc)*length(dates)*length(mods), min=0, max=30)
df <- data.table(expand.grid(Location=loc,Date=dates,Model=mods),Temperature=temp)

つまり、基本的に、ロケーション1については、モデルAで2000年1月から2004年12月までの測定を行います。次に、モデルBで測定を行います。モデルC、D、およびEについても同様です。次に、ロケーション2についても同様です。場所10へ。

私がする必要があるのは、(モデルからの)5つの異なる温度測定を行う代わりに、すべてのモデルの平均温度を取得することです。

その結果、場所ごと、日付ごとに、5つではなく、1つだけの温度測定値が得られます(これはマルチモデル平均になります)。

私はこれを試しました:

df2 <- df[, Mean:=mean(Temperature), by=list(Model, Location, Date)]

思ったように動作しませんでした。5つの測定値を1つの測定値に要約しているので、少なくとも、結果のデータテーブルは元のテーブルの行数の1/5になると思います。

私は何が間違っているのですか?

bgoldst

テストデータが正しく生成されていないと思います。この関数expand.grid()は、すべての引数のデカルト積を取ります。なぜあなたがそのTemperature=temp議論をexpand.grid()呼びかけに含めたのかわかりませんこれにより、キーの組み合わせごとに各温度値が複製され、900万行のdata.tableが作成されます(これは(10*60*5)^2)。キーごとに1つの温度値を意図したと思います。これにより、次の10*60*5行が表示さます。

df <- data.table(expand.grid(Location=loc,Date=dates,Model=mods),Temperature=temp);
df;
##       Location       Date Model Temperature
##    1:        1 2000-01-01     A    2.469751
##    2:        2 2000-01-01     A   16.103135
##    3:        3 2000-01-01     A    7.147051
##    4:        4 2000-01-01     A   10.301937
##    5:        5 2000-01-01     A   16.760238
##   ---
## 2996:        6 2004-12-01     E   26.293968
## 2997:        7 2004-12-01     E    8.446528
## 2998:        8 2004-12-01     E   29.003001
## 2999:        9 2004-12-01     E   12.076765
## 3000:       10 2004-12-01     E   28.410980

これが正しければ、次の方法でモデル全体の平均を生成できます。

df[,.(Mean=mean(Temperature)),.(Location,Date)];
##      Location       Date      Mean
##   1:        1 2000-01-01  9.498497
##   2:        2 2000-01-01 11.744622
##   3:        3 2000-01-01 15.691228
##   4:        4 2000-01-01 11.457154
##   5:        5 2000-01-01  8.897931
##  ---
## 596:        6 2004-12-01 17.587000
## 597:        7 2004-12-01 19.555963
## 598:        8 2004-12-01 15.710465
## 599:        9 2004-12-01 15.322790
## 600:       10 2004-12-01 20.240392

:=演算子は実際には集計されないことに注意してください元のdata.tableの列を追加、変更、または削除するだけです。集計された計算の重複新しい列を追加する(または古い列を上書きする)ことができます(例:http://www.r-bloggers.com/two-of-my-favorite-data-table-features/を参照))、しかしそれはあなたが望むものではありません。

一般に、データのテーブルを集約する場合、必然的に、集約キーごとに1行に削減される新しいテーブルを作成することになります。:=オペレータは、これを実行しません。

代わりに、data.tableで通常のインデックス操作を実行し、必要な集計キー(出力data.tableに自動的に含まれる)でグループ化し、それにj各グループに対して1回評価される引数を追加する必要があります。 。結果は元のテーブルの縮小版になり、すべてのj引数評価の結果がそれぞれの集計キーにマージされます。私達のためj各群のスカラー値で引数結果、我々の結果は、一列あたりであろうLocation/Date凝集キー。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

分類Dev

Data.table:shinyを使用して変数ごとにグループを動的に選択します

分類Dev

R data.tableは、グループごとに特定の列を最後の値に設定します

分類Dev

グループごとにdata.tableの複数の列に複数の関数を適用します

分類Dev

data.framesのRリスト、共通因子変数によるグループ化の要約を意味します

分類Dev

data.tableの:=を使用して、グループごとに複数の列を割り当てます

分類Dev

data.tableは、グループごとにN個の最も頻繁な値を取得します

分類Dev

data.tableは、グループごとに他の行から欠落している値を埋めます

分類Dev

data.frame内のグループごとに末尾のNAを削除します

分類Dev

グループごとの条件付き行数をdata.frameに表示します

分類Dev

グループごとの条件でdata.tableをフィルタリングします

分類Dev

data.tableはキー行を削除し、要約します

分類Dev

data.tableを使用した集約グループからの要約統計量

分類Dev

data.tableがグループごとに正しいsplinefunを返さない

分類Dev

data.table SDは、存在する数ではなく、NAフィルを使用して、グループごとに要求された数の行を返します。

分類Dev

r data.table-重複する値に空白を割り当てます(グループごと)

分類Dev

別のdata.tableから間隔を検索します-グループごと

分類Dev

列クラスに応じて異なるアクションを使用して、data.tableをグループごとに減らしますか?

分類Dev

data.tableのグループごとに間隔/ビンを割り当てます

分類Dev

n番目の観測値を選択し、data.tableを使用してグループごとに合計します

分類Dev

data.tableで、グループごとに特定の時間にわたって同一の連続する値を削除します

分類Dev

R:data.tableのグループごとに、指定された列の異なる要素を持つ行を効率的に抽出します

分類Dev

data.tableを使用して繰り返しなしでグループごとにサンプリング

分類Dev

グループごとにdata.frameでベクトルベースの操作を実行します

分類Dev

Rの列名グループごとに行列(またはdata.frame)を集計します

分類Dev

グループごとにdata.tableのウィンドウ内の値の数をカウントします

分類Dev

R data.tableは、グループごとに複数の列内の一意の値をカウントします

分類Dev

文字列をコードとして渡して、data.tableで複数の列を要約します

分類Dev

要約して、グループごとに長さを返します

Related 関連記事

  1. 1

    文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

  2. 2

    Data.table:shinyを使用して変数ごとにグループを動的に選択します

  3. 3

    R data.tableは、グループごとに特定の列を最後の値に設定します

  4. 4

    グループごとにdata.tableの複数の列に複数の関数を適用します

  5. 5

    data.framesのRリスト、共通因子変数によるグループ化の要約を意味します

  6. 6

    data.tableの:=を使用して、グループごとに複数の列を割り当てます

  7. 7

    data.tableは、グループごとにN個の最も頻繁な値を取得します

  8. 8

    data.tableは、グループごとに他の行から欠落している値を埋めます

  9. 9

    data.frame内のグループごとに末尾のNAを削除します

  10. 10

    グループごとの条件付き行数をdata.frameに表示します

  11. 11

    グループごとの条件でdata.tableをフィルタリングします

  12. 12

    data.tableはキー行を削除し、要約します

  13. 13

    data.tableを使用した集約グループからの要約統計量

  14. 14

    data.tableがグループごとに正しいsplinefunを返さない

  15. 15

    data.table SDは、存在する数ではなく、NAフィルを使用して、グループごとに要求された数の行を返します。

  16. 16

    r data.table-重複する値に空白を割り当てます(グループごと)

  17. 17

    別のdata.tableから間隔を検索します-グループごと

  18. 18

    列クラスに応じて異なるアクションを使用して、data.tableをグループごとに減らしますか?

  19. 19

    data.tableのグループごとに間隔/ビンを割り当てます

  20. 20

    n番目の観測値を選択し、data.tableを使用してグループごとに合計します

  21. 21

    data.tableで、グループごとに特定の時間にわたって同一の連続する値を削除します

  22. 22

    R:data.tableのグループごとに、指定された列の異なる要素を持つ行を効率的に抽出します

  23. 23

    data.tableを使用して繰り返しなしでグループごとにサンプリング

  24. 24

    グループごとにdata.frameでベクトルベースの操作を実行します

  25. 25

    Rの列名グループごとに行列(またはdata.frame)を集計します

  26. 26

    グループごとにdata.tableのウィンドウ内の値の数をカウントします

  27. 27

    R data.tableは、グループごとに複数の列内の一意の値をカウントします

  28. 28

    文字列をコードとして渡して、data.tableで複数の列を要約します

  29. 29

    要約して、グループごとに長さを返します

ホットタグ

アーカイブ