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 ์ค ํ๋์ ์ํด ๋์ ๋ ํ๊ท์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ PR์ ๋ง๋ค์์ต๋๋ค. ๋ด PR ์ค ํ๋์ ์ํด ๋์ ๋ ํ๊ท์ ๋๋ค.