Data.table: рдПрдХ рдЧреИрд░-рдХреБрдВрдЬреА рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдПрдХ рдХреБрдВрдЬреАрдмрджреНрдз рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдХрднреА-рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдорд╛рд░реНрдЪ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Rdatatable/data.table

рдореИрдВ рджреЛ 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[i, on=key(x)] рдмрд╛рдж 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"

рдЗрд╕реЗ рдЗрд╕рдХреА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛/рдирд╛рдореЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдБ, x[i, on=key(x)] рдмрд╛рдж 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"

рдЗрд╕реЗ рдЗрд╕рдХреА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛/рдирд╛рдореЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж - рднреНрд░рдорд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ :)

рдкреИрдЪ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

pannnda picture pannnda  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DavidArenburg picture DavidArenburg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jangorecki picture jangorecki  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nachti picture nachti  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MichaelChirico picture MichaelChirico  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ