Π Π²Π΅ΡΡΠΈΠΈ 1.11.2
ΠΏΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² %in%
ΠΈ &
%in%
Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
install.packages('data.table')
packageVersion("data.table") # β1.11.2β
data("iris")
library(data.table)
iris <- data.table(iris)
iris$grp <- c('A', 'B')
[ΠΡΠΎΠ±Π»Π΅ΠΌΠ°]
ΠΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²Ρ Π² 'virginica' ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ %in%
Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΠΎΠ±Π΅ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° &
, ΡΠΌ. ΠΠΈΠΆΠ΅:
iris[, Species1 := factor(Species, levels = c('setosa', 'versicolor', 'virginica'), labels = c('setosa', 'versicolor', 'Virginica'))]
iris[Species1 %in% c('setosa', 'Virginica') & grp == 'B', table(Species1)]
# Species1
# setosa versicolor Virginica
# 0 0 25
[ΠΡΠΈΠΌΠ΅ΡΡ]
ΠΡΠΎΠ±ΠΎΠ²Π°Π» Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π½ΠΈΠΆΠ΅, ΠΈ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΡΠ»ΠΈ Ρ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΡΡΠΏΠΏ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ, Π±ΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ ΠΎΠ±Π΅ Π³ΡΡΠΏΠΏΡ.
iris[Species1 %in% c('setosa', 'versicolor') & grp == 'B', table(Species1)]
# Species1
# setosa versicolor Virginica
# 25 25 0
ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΎΠ±Π΅ Π³ΡΡΠΏΠΏΡ Π±ΡΠ΄ΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ.
iris[(Species1 %in% c('setosa', 'Virginica')) & grp == 'B', table(Species1)]
# Species1
# setosa versicolor Virginica
# 25 0 25
iris[Species1 %in% c('setosa', 'Virginica') & (grp == 'B'), table(Species1)]
# Species1
# setosa versicolor Virginica
# 25 0 25
Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ subset
ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
table(subset(iris, Species1 %in% c('setosa', 'Virginica') & grp == 'B')$Species1)
# setosa versicolor Virginica
# 25 0 25
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ data.table Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π΅ΡΡΠΈΡ 1.10.4-3
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π΄Π΅ΡΡ):
devtools::install_version("data.table", version = "1.10.4-3", repos = "http://cran.us.r-project.org")
packageVersion("data.table") # β1.10.4.3β
data("iris")
library(data.table)
iris <- data.table(iris)
iris$grp <- c('A', 'B')
iris[, Species1 := factor(Species, levels = c('setosa', 'versicolor', 'virginica'), labels = c('setosa', 'versicolor', 'Virginica'))]
iris[Species1 %in% c('setosa', 'Virginica') & grp == 'B', table(Species1)]
# Species1
# setosa versicolor Virginica
# 25 0 25
[ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅Π°Π½ΡΠ΅]
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.11.2
loaded via a namespace (and not attached):
[1] compiler_3.4.4 tools_3.4.4 yaml_2.1.18
@MarkusBonsch Ρ ΠΎΡΠΈΡΠ΅ Π²Π·Π³Π»ΡΠ½ΡΡΡ? ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ verbose = TRUE
Optimized subsetting with index 'grp__Species1'
on= matches existing index, using index
Coercing character column i.'Species1' to factor to match type of x.'Species1'. If possible please change x.'Species1' to character. Character columns are now preferred in joins.
Π― ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
@ ddong63 ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ %in%
Π΄Π»Ρ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ ΡΠ°ΠΊΡΠΎΡΠ° - ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠΎ, ΡΠ΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ, ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ match
.
@HughParsonage , Π½Π°Π΄Π΅ΡΡΡ, ΡΠΊΠΎΡΠΎ Π±ΡΠ΄Π΅Ρ, https://github.com/Rdatatable/data.table/pull/2734 ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π½Ρ-ΠΎΡΠ΅Π½Ρ ΡΡΡΠ°Π½Π½ΠΎ. Π― ΠΈΡΡΠ»Π΅Π΄ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΡΠ΅Ρ.
@jangorecki Π±ΡΠ» ΠΏΡΠ°Π². ΠΠΎΠ³Π΄Π° ΠΎΠ±Π° ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
, ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ ΡΠ°ΠΊΡΠΎΡΠ½ΡΠΉ, ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΡΠ΅Π½Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»Π΅Π½ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ @MarkusBonsch
Π― ΡΠΎΠ·Π΄Π°Π» PR, ΠΊΠΎΡΠΎΡΡΠΉ (Π½Π°Π΄Π΅ΡΡΡ) ΡΠ΅ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΡΠ΅Π³ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΈΠ°ΡΡΠΈΠΊΠΎΠ².
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΡΠΎΠ·Π΄Π°Π» PR, ΠΊΠΎΡΠΎΡΡΠΉ (Π½Π°Π΄Π΅ΡΡΡ) ΡΠ΅ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΡΠ΅Π³ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΈΠ°ΡΡΠΈΠΊΠΎΠ².