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 Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ послС 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"

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отсортирован ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΈΠΌΠ΅Π½ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ.

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”Π°, ΠΊΠ»ΡŽΡ‡ для 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"

Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отсортирован ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΈΠΌΠ΅Π½ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ.

Бпасибо - ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ :)

ΠΏΠ°Ρ‚Ρ‡ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ