рд╕рдВрд╕реНрдХрд░рдг 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')
[рдореБрджреНрджрд╛]
'рд╡рд░реНрдЬрд┐рдирд┐рдХрд╛' рдореЗрдВ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЛ рдХреИрдкрд┐рдЯрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, %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 рд▓рдВрдмрд┐рдд рд╣реИред
рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдмред рдореИрдВ ASAP рдХреА рдЬрд╛рдВрдЪ рдФрд░ рд╕реБрдзрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
@jangorecki рд╕рд╣реА рдерд╛ред рдЬрдм рджреЛрдиреЛрдВ рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рд╡рд░реНрдг рдпрд╛ рдХрд╛рд░рдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ @MarkusBonsch
рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ (рдЙрдореНрдореАрдж рд╣реИ) рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдЬрд┐рд╕реЗ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рд╕реЗ рдПрдХ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ (рдЙрдореНрдореАрдж рд╣реИ) рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИ рдЬрд┐рд╕реЗ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рд╕реЗ рдПрдХ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред