1. ホーム
  2. r

[解決済み] Rのdata.tableの.SDは何の略か?

2022-04-20 19:46:31

質問事項

.SD は便利そうですが、何をやっているのかよくわかりません。これは何のためにあるのでしょうか?なぜピリオド(フルストップ)が前にあるのか。これを使うとどうなるのでしょうか?

読みました。 .SDdata.table の部分集合を含む。 x のデータは、グループのカラムを除いて、各グループのデータである。でグループ化する際に使用することができる。 i でグループ化した場合 by は、キーになる by そして、_ad hoc_ by

ということは、娘さんは data.table は、次の操作のためにメモリに保持されるのですか?

どのように解決するのですか?

.SD は " のようなものです。 S の部分集合 D ata.table"です。最初の "." ユーザー定義のカラム名と衝突する可能性がより低くなることを除けば、です。

これがあなたのdata.tableであれば。

DT = data.table(x=rep(c("a","b","c"),each=2), y=c(1,3), v=1:6)
setkey(DT, y)
DT
#    x y v
# 1: a 1 1
# 2: b 1 3
# 3: c 1 5
# 4: a 3 2
# 5: b 3 4
# 6: c 3 6

これを行うことで、以下のような効果が期待できます。 見る .SD があります。

DT[ , .SD[ , paste(x, v, sep="", collapse="_")], by=y]
#    y       V1
# 1: 1 a1_b3_c5
# 2: 3 a2_b4_c6

基本的には by=y ステートメントは、元のdata.tableを次の2つのサブに分割します。 data.tables

DT[ , print(.SD), by=y]
# <1st sub-data.table, called '.SD' while it's being operated on>
#    x v
# 1: a 1
# 2: b 3
# 3: c 5
# <2nd sub-data.table, ALSO called '.SD' while it's being operated on>
#    x v
# 1: a 2
# 2: b 4
# 3: c 6
# <final output, since print() doesn't return anything>
# Empty data.table (0 rows) of 1 col: y

であり、それらを順番に操作していく。

どちらかを操作している間、現在のサブジェクトを参照することができます。 data.table というニックネーム/ハンドル/シンボルを使って .SD . という1つのdata.tableをコマンドラインで操作しているのと同じように、カラムにアクセスして操作できるので、非常に便利です。 .SD ...ただし、ここでは data.table は、これらの操作をすべてのサブ data.table キーの組み合わせで定義され、それらを貼り合わせ、その結果を1つの data.table !