Π― ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡ ΠΊ Π΄Π²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ data.table
: dt_tbl
(Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΊΠ»ΡΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ dcast
) Π² Y
(Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ ΠΊΠ»ΡΡΠ°) Π² ΡΡΠΎΠ»Π±Π΅Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ROLE_TYPE
. Π― ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΡΠΎ ΡΡΠΎΠ»Π±Π΅Ρ NumTxns
Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 86 Π΄Π»Ρ ROLE_TYPE == "A"
, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ NA
.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ROLE_TYPE
( dt_tbl
ΠΎΠ±ΡΠ΅ΠΊΡΠ° dcast
-ed) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
library(data.table)
dt_tbl <- data.table(
ROLE_TYPE = c("D", "A"),
CountCases = c(16L, 25L)
)
X <- data.table(
outlier = c(FALSE, TRUE),
ROLE_TYPE = c("A", "A"),
N = c(220L, 29L)
)
# a dcast-ed table is now keyed
str(dcast(X, ROLE_TYPE ~ outlier, value.var = "N", fill = 0))
# cast and join
dt_tbl <- dcast(X, ROLE_TYPE ~ outlier, value.var = "N", fill = 0)[
dt_tbl,
on = "ROLE_TYPE"
]
# this is correct
dt_tbl
str(dt_tbl)
Y <- data.table(ROLE_TYPE = "A", NumTxns = 86L)
dt_tbl <- Y[
dt_tbl,
on = "ROLE_TYPE"
]
# why is NumTxns NA?
dt_tbl
# ROLE_TYPE NumTxns FALSE TRUE CountCases
# 1: D NA NA NA 16
# 2: A NA 220 29 25
sessionInfo()
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.12.1
loaded via a namespace (and not attached):
[1] Rcpp_1.0.0 rstudioapi_0.7 magrittr_1.5 usethis_1.4.0 devtools_2.0.1 pkgload_1.0.2 R6_2.3.0 rlang_0.3.1
[9] tools_3.5.1 pkgbuild_1.0.2 sessioninfo_1.1.1 cli_1.0.1 withr_2.1.2 remotes_2.0.2 yaml_2.2.0 assertthat_0.2.0
[17] digest_0.6.18 rprojroot_1.3-2 crayon_1.3.4 processx_3.2.0 callr_3.0.0 base64enc_0.1-3 fs_1.2.6 ps_1.2.1
[25] curl_3.3 testthat_2.0.0 glue_1.3.0 memoise_1.1.0 compiler_3.5.1 desc_1.2.0 backports_1.1.2 prettyunits_1.0.2
ΠΠ°, ΠΊΠ»ΡΡ Π΄Π»Ρ x Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ x[i, on=key(x)]
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
library(data.table)
dx = data.table(id = "A", key = "id")
di = list(c("D", "A"))
(res <- dx[di])
# id
# 1: D
# 2: A
key(res)
# [1] "id"
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎ ΠΊΠ»ΡΡΡ.
ΠΡΡΠ°ΡΠΈ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² / ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌ, ΡΠ΅ΠΌ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ - ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ :)
ΠΏΠ°ΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°, ΠΊΠ»ΡΡ Π΄Π»Ρ x Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅
x[i, on=key(x)]
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎ ΠΊΠ»ΡΡΡ.
ΠΡΡΠ°ΡΠΈ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² / ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌ, ΡΠ΅ΠΌ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ.