data.table
データのサブセットに.SDと.SDcolsを使用する
サーチ…
前書き
特殊記号
.SD
で利用可能であるj
のDT[i,j,by]
毎にDの ATA のS ubsetを捕捉する、 by
、フィルタ生存群i
。 .SDcols
はヘルパーです。公式ドキュメントの場合は?`special-symbols`
をタイプして?`special-symbols`
。
備考
注意: DT[where, select|update|do, by]
構文は、data.tableの列を操作するために使用されます。
- "where"部分が
i
引数です。 - "select | update | do"部分は
j
引数です
これらの2つの引数は、通常、名前ではなく位置によって渡されます。
.SDと.SDcolsの使用
。SD
.SD
は、 data.table
で使用さby
すべての列を除いて、各グループのdata.table
のサブセットを参照します。
.SD
とlapply
は、 data.table
グループdata.table
に複数のカラムに任意の関数を適用するために使用できます
同じ組み込みデータセットmtcars
を引き続き使用しmtcars
。
mtcars = data.table(mtcars) # Let's not include rownames to keep things simpler
データセット内のすべての列の、 シリンダ数 、 cyl
平均:
mtcars[ , lapply(.SD, mean), by = cyl]
# cyl mpg disp hp drat wt qsec vs am gear carb
#1: 6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143 3.428571
#2: 4 26.66364 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909 1.545455
#3: 8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714 3.500000
cyl
とは別に、 vs
、 am
、 gear
、 carb
などのデータセットには他のカテゴリの列があります。これらの列のmean
を取ることは実際には意味がありません。だから、これらの列を除外しましょう。これは、 .SDcols
が絵になる場所です。
.SDcols
.SDcols
の列を指定data.table
に含まれています.SD
。
歯車の数で、データセットのすべての列(連続列)の平均gear
、及び気筒数 、 cyl
によって配置、 gear
とcyl
:
# All the continuous variables in the dataset
cols_chosen <- c("mpg", "disp", "hp", "drat", "wt", "qsec")
mtcars[order(gear, cyl), lapply(.SD, mean), by = .(gear, cyl), .SDcols = cols_chosen]
# gear cyl mpg disp hp drat wt qsec
#1: 3 4 21.500 120.1000 97.0000 3.700000 2.465000 20.0100
#2: 3 6 19.750 241.5000 107.5000 2.920000 3.337500 19.8300
#3: 3 8 15.050 357.6167 194.1667 3.120833 4.104083 17.1425
#4: 4 4 26.925 102.6250 76.0000 4.110000 2.378125 19.6125
#5: 4 6 19.750 163.8000 116.5000 3.910000 3.093750 17.6700
#6: 5 4 28.200 107.7000 102.0000 4.100000 1.826500 16.8000
#7: 5 6 19.700 145.0000 175.0000 3.620000 2.770000 15.5000
#8: 5 8 15.400 326.0000 299.5000 3.880000 3.370000 14.5500
たぶん、グループ別にmean
を計算したくないかもしれません。データセット内のすべての車の平均を計算するために、 by
変数は指定しません。
mtcars[ , lapply(.SD, mean), .SDcols = cols_chosen]
# mpg disp hp drat wt qsec
#1: 20.09062 230.7219 146.6875 3.596563 3.21725 17.84875
注:事前にcols_chosen
を定義する必要はありません。 .SDcols
は列名を直接取ることができます
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow