7

data.table次のデータテーブルを要約するためにRで使用しようとしています。

SiteNo Var1 Var2 Var3 ... Var18 Group
1      0.1 0.3  1         0.3     1
2      0.3 0.1  0.9       0.2     1
etc.

668,944の観測値、43のサイト、3つのグループ、および19の変数があります。meanサイトとグループの両方で各列/変数を要約する関数(たとえば)の結果を取得したいと思います。したがって、43のサイトx 3つのグループx要約統計量の数(たとえば、mean)が必要です。私は次のコードを使用しました:

e.dt<-data.table(e)
setkey(e.dt, Group) # set key to group number

# get mean for each column/variable
e.dt.mean<-e.dt[,lapply(.SD,mean), by="SiteNo"]

上記を使用すると、43のサイトが得られますが、私が求めていた3つのグループは得られません。元のデータテーブルを3つのグループに分割することはできましたが、を使用して2つの変数(SiteNoとGroup)を使用して要約する方法があるかどうか疑問に思いましたdata.table

私はまだRTMを使用しdata.tableていますが、これまでのところ、上記の答えは見つかりませんでした。

4

1 に答える 1

12

キーを「Group」と「SiteNo」の両方に設定してみてください。

下の例から?key

keycols <- c("SiteNo", "Group")
setkeyv(e.dt, keycols)

次に、次のように使用byします。

e.dt[, lapply(.SD,mean), by = key(e.dt)]

または、次を使用することもできます。

e.dt[, lapply(.SD,mean), by = "SiteNo,Group"]

また

e.dt[, lapply(.SD, mean), by = list(SiteNo, Group)]
于 2012-12-17T18:31:18.263 に答える