Π― ΡΠ°ΡΡΠΎ Π΄Π΅Π»Π°Ρ
DT[CJ(colA = colA, colB = colB, unique=TRUE), on=c("colA","colB")]
# to complete missing levels
# or
DT[, CJ(colA = colA, colB = colB, unique=TRUE)][!DT, on=c("colA","colB")]
# to identify missing levels
# http://stackoverflow.com/a/36065607/1191259
ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ ΠΌΠΎΠ³ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π· colA
ΠΈ colB
. FR Π·Π΄Π΅ΡΡ Π΄Π»Ρ
CJ(colA, colB, unique=TRUE, names=TRUE)
ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° colA
ΠΈ colB
, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ data.frame () ΠΈ data.table () ( make.names
?).
(ΠΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ on=.Icols
Π±ΡΠ»ΠΎ, Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ, Π½ΠΎ Ρ ΠΎΡΡΠ°Π²Π»Ρ ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ FR.)
Π’ΠΠ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ...
CJ
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ...
ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ, AFAIK Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π½Π° CJ(x, ...)
, ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ Π²ΠΌΠ΅ΡΡΠ΅ # 1090
+1, ΠΈ Ρ Π½Π΅ Π²ΠΈΠΆΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ names
- ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π‘ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«onΒ» Π²ΠΌΠ΅ΡΡΠΎ setkey
ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΏΡΠ΅ΡΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
Π― ΡΠ°ΠΊΠΆΠ΅ Ρ
ΠΎΡΠ΅Π» Π±Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ unique = TRUE
- Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ _ever_ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ CJ
.
@jangorecki Π― Π΅ΡΠ΅ Π½Π΅ ΡΡΠΎΠ³Π°Π» Π²Π΅ΡΠΈ # 1090 / # 814. Π»ΡΡΡΠ΅ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ, Ρ Π΄ΡΠΌΠ°Ρ, Π΅ΡΠ»ΠΈ Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅ ΡΠΏΡΡΠΊΠ°Ρ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
+1, ΠΈ Ρ Π½Π΅ Π²ΠΈΠΆΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅
names
- ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π‘ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«onΒ» Π²ΠΌΠ΅ΡΡΠΎsetkey
ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΏΡΠ΅ΡΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.Π― ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠ΅Π» Π±Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ
unique = TRUE
- Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ _ever_ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»ΡCJ
.