v1.9.8
์์
i.col
์ฌ์ฉ์ ๋ฌธ์ํํฉ๋๋ค. d) #1232์ ์ฑ๋ฅ/์ฅ์ ์ ๋ํด์๋ ์ค๋ช
ํฉ๋๋ค.get()
๋ฐ mget()
.ํฅํ ๋ฆด๋ฆฌ์ค
fread
+ rbindlist
), ์์ ์ง์ , ์์ ์ง์ ๋ฐ ์ค์ ์์
data.table()
์ data.frame()
์ ์ฐจ์ด์ ์ ์ด๋๊ฐ์ ๋ฌธ์ํํ์ญ์์ค - ๊ด๋ จ ๋ฌธ์ : #968, #877. FAQ์์ ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช
ํ ์ ์์ต๋๋ค.data.table
์ฌ์ฉ:fread+fwrite
๋น๋คํธ, fread ์ํค https://github.com/Rdatatable/data.table/issues/2855์์ฑ ๋:
i
ํ์ ์งํฉ ํ j
๋ฐ ์ฌ์ฉํ์ฌ ์ง๊ณ by
.i
๋ฐ by
๋ก ์ด์ ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก)by=.EACHI
SO ์์ integer64
๋ฅผ ์ฌ์ฉํ๊ณ _ํฐ ์ ์_์ ๋ํด ์น๊ฒฉํ๋ ์์
.์ฐธ๊ณ ์ฌํญ(ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๋น๋คํธ ์ ๋ฐ์ดํธ): ๋ด๊ฐ ๋์น ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
order
in i
.j
์ด ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.[x] .SDcols
๋ํ ์๋ก์ด ์
๋ฐ์ดํธ ๋ฐ with=FALSE
์ด์ colA:colB
๋ก ์ ํํ ์ ์์์ ์ธ๊ธํฉ๋๋ค.
[ ] ๋ค๋ฅธ ๋ชจ๋ ๊ด๋ จ set*
ํจ์๋ ์ฌ๊ธฐ์ ์ค๋ช
ํ์ญ์์ค. ( setnames
, setcolorder
๋ฑ..)
set
.[x] 1b) the := operator
๋ ๋จ์ง ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ ์๋ค๊ณ ์ค๋ช
ํ์ญ์์ค - ๊ฑฐ๊ธฐ ์์ ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค - ์ด ์ฃผ์ ๋ค์์ .
[ ] ์ ์/์ด์ค ํค๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์งํฉ์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
[ ] NA๋ฅผ ์ด์ง ๊ฒ์ ๊ธฐ๋ฐ ํ์ ์งํฉ์ผ๋ก ๋์ฒดํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น?
[x] ์๋ฅผ ๋ค์ด readRDS()
์ฌ์ฉํ์ฌ ํ์ผ์์ R ๊ฐ์ฒด๋ฅผ ์ฝ์ ๋ ์ธ๋ถ ํฌ์ธํฐ๊ฐ NULL์ธ ๋ฌธ์ ์ ๋ํ FAQ ์
๋ฐ์ดํธ ์ด SO ๊ฒ์๋ฌผ์ ์
๋ฐ์ดํธ
alloc.col()
์ฌ์ฉํ์ฌ data.table ์ ๊ณผ๋ํ๊ฒ ํ ๋นํ๋ ๊ฒฝ์ฐ์ ์ด๋ฅผ ์ฌ์ฉํ๋ ์๊ธฐ(์ฌ๋ฌ ๊ฐ์ ์ด์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ) ๋ฐ ๊ทธ ์ด์ ๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช
ํฉ๋๋ค. ์ด SO ๊ฒ์๋ฌผ์ ์
๋ฐ์ดํธ fread
๋ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์์ ์์ ์ ์ฃผ๋ก ๋ฐ์ดํฐ ๋ณํ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ fread
๋ ๋ฐ์ดํฐ ์ถ์ถ์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋น๋คํธ์์๋ ๊ฑด๋๋ธ ์ ์์ง๋ง IMO์์๋ ์ด๋ฌํ data.table
๊ธฐ๋ฅ์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
ํธ์ง: Rnw ๋๋ Rmd ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?
๋์ํ๊ณ ์ ๋ฐ์ดํธํ์ต๋๋ค.
tapply
๋ณด๋ค ๋นจ๋ฆฌ ๊ฐ๊ธฐ์ ๊ฑธ๋ฆฌ๋ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๋ต์ ํ ๋ถ๋ถ์ gforce์ด์ง๋ง ์ฌ์ฉ์ ์์ฑ ํจ์๋ ์ด๋ป์ต๋๊น? ๋๋ ์ด๊ฒ์ ๋ํด ์๋ฌด๊ฒ๋ ์ฐพ์ ์ ์์ต๋๋ค. ํฌ๋์ ๋ํ ์ข์ ๊ฒ์๋ฌผ์ด ์์ต๋๋ค. http://wesmckinney.com/blog/?p=489
sapply
์ ๋น๊ตํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒกํฐ ๋ชฉ๋ก์์ ์์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๊ฒ์ ์ด์ ๊น์ง์ ๊ฐ์น๋ ๊ทธ๊ฒ์ด data.table ํ ์ด์ ๋ชจ๋ ๋ฒกํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค by
๋์ sapply
?
@matthieugomez ํฅ๋ฏธ๋ก์ด ์ง๋ฌธ์ ๋๋ค! ์ด๊ฒ๋ ๋ฎ์ด๋์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ณ์ ์ค์ธ์ :-).
IDateTime๊ณผ ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ฐฐ์ฐ๊ณ ์ถ์ต๋๋ค.
@gsee๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
R๊ณผ data.table(3์ ์ดํ)์ ์ฒ์ ์ ํ๊ธฐ ๋๋ฌธ์ ํ์ฌ์ ๊ธฐ๋ฅ ์งํฅ์ ์ธ ์๊ฐ๊ฐ ์๋ ๊ธฐ๋ณธ์ ์ธ ๊ฒฐ๊ณผ ์งํฅ์ ์ธ ์๊ฐ๊ฐ ํ์ํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ฆ, data.table์ ๊ฐ ๋งค๊ฐ๋ณ์๊ฐ ํ๋ ์ผ์ ์ฝ๋ ๊ฒ์ด ์ค์ํ์ง๋ง ์ ์ค ์ผ์ด์ค๋ฅผ ์ผ๋์ ๋์ง ์๊ณ ๋ ๊ฑฐ์ ์๋ฏธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ถ๋ ฅ์ ์๊ฐ ์์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ผ ํฉ๋๋ค. ์ฆ, ์ด๋ค ์ถ๋ ฅ์ด ํ์ํ์ง ์์ง๋ง ์ด๋ค ๊ธฐ๋ฅ/๋งค๊ฐ๋ณ์/์ค์ ์ด ์ฌ์ฉํ๊ธฐ์ ๊ฐ์ฅ ์ ํฉํ์ง ๋ชจ๋ฆ ๋๋ค. ์์ํ๊ธฐ ์ํด ๊ฐ๋จํ ๋ ์ํผ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋ด ๋ฐ์ดํฐ์ ํ์ ์งํฉ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
๋ด ๋ฐ์ดํฐ์ ํ์ ์งํฉ์ ๋ํด ์์
์ ์ํํ์ฌ ์ ๋ฐ์ดํฐ ๋๋ ์
๋ฐ์ดํธ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ ์ด์ ์ด๋ป๊ฒ ์ถ๊ฐํฉ๋๊น?
์ด์ ์ญ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น?
๋จ์ผ ๋ณ์๋ ์ด๋ป๊ฒ ์์ฑํฉ๋๊น?
์ฌ๋ฌ ๋ณ์๋ฅผ ์์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๋ด ๋ฐ์ดํฐ์ ๋ค๋ฅธ ํ์ ์งํฉ์ ๋ํด ์ด๋ป๊ฒ ๋ค๋ฅธ ์์
์ ์ํํฉ๋๊น? (.์ ์ํด)
ํจ์์์ data.table์ ์ฌ์ฉํ๊ณ ์๋ํ data.table ์ด๋ฆ๊ณผ ์ด์ ์ด๋ป๊ฒ ์ ๋ฌํฉ๋๊น?
๋์ผํ data.table์์ ์ฌ๋ฌ ์์ฐจ์ ์์
์ ์ํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๋ฐ์ดํฐ์ ํ์ ์งํฉ์ ์ ํํ๊ณ ๋์์ ์์
์ ์ํํ ์ ์์ต๋๊น?
์ฐธ์กฐ๋ก ๋ณ์๋ฅผ ์์ฑ/์
๋ฐ์ดํธํ ๋ ์ฃผ์ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์ธ์ ์
๋๊น?
๊ทธ๋ฃน๋น ํ๋์ ๊ด์ฐฐ(์ฒซ ๋ฒ์งธ, ๋ง์ง๋ง)์ ์ ํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น?
ํค๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ๊ณ ์ธ๋ฑ์ค ์ค์ ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฆ
๋๊น?
๋ด data.table์์ ์์
์ ์ํํ ๋ ๋ด ํค๊ฐ ์ญ์ ๋๋ ์กฐ๊ฑด์ ๋ฌด์์
๋๊น?
์ผ๋ฐ "๋ณํฉ" ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๊น ์๋๋ฉด data.table ๊ตฌ๋ฌธ(Y[X])์ ์ฌ์ฉํด์ผ ํฉ๋๊น?
๋ชฉ๋ก ๋ชฉ๋ก์ ํ๋์ ํฐ data.table๋ก ์ถ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ด์ ์์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํฉ๋๊น?
์ง๋ฌธ๊ณผ ๋ต๋ณ์ ๊ฐ๋จํ ํธ์ง์ผ๋ก ํธ์งํ ์ ์๋ ๋ค๋ฅธ ํญ๋ชฉ์ด ๋ชจ๋ SO์ ์์ ๊ฒ์ ๋๋ค.
@markdanese ์ ์
๋๋ ์ง๊ธ (๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ) ๋น๋คํธ๋ฅผ ์ฐ๊ณ ์์ผ๋ฉฐ ํ์์ ๊ฑฐ์ ์ด๋ฐ ๋ฐฉ์(Q&A)์ด๋ฉฐ ์๋ฅผ ๋ค์ด ๋ต์ ์ค๋ช ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋น๋คํธ๋ฅผ ๋ค๋ฌ์ ํ์๋ ํผ๋๋ฐฑ์ ์ป๊ธฐ ์ํด ์ฌ๊ธฐ์ ๊ฒ์ํ ์๊ฐ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ ์๊ฐ๋ ์ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค.
์ํค ํ์ด์ง ์์ด๋์ด์ ์ถ๊ฐ ํ์ฅ: http://www.ats.ucla.edu/stat/r/์ ๋์ด๋ FAQ ๋ฐ ์ฝ๋ ์กฐ๊ฐ(๊ณ ๊ธ) ๋งํฌ๋ R์ ๊ธฐ์กด ์์ ์ ๋ฐ์ดํฐ์ ๋์กฐํ๋ ๋ฐ ์ ์ฉํ ๋ฆฌ์์ค์ผ ์ ์์ต๋๋ค. .ํ ์ด๋ธ ๋ฐฉ์. ๋ด ๋๋ฃ์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ(http://vijaylulla.com/wp/2014/11/12/grouping-in-r-using-data-table/)์์ ์ด์ ๊ฐ์ ์์ ์ ์ํํ์ต๋๋ค. ๋ป๋ปํ ์๊ธฐ ํ๋ณด ์ฃ์กํฉ๋๋ค.
_data.table_ vignette ์๊ฐ๋ฅผ ๋ง์ณค์ต๋๋ค(์ ๋งํฌ ์ฐธ์กฐ). ๋น์ ์ด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
ํ๋ฅญํ ํผ๋๋ฐฑ์ ์ฃผ์ @jangorecki ์ @brodieG , ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก @mattdowle :-)์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด๊ฒ์ ์ ๋ง ํ๋ฅญํฉ๋๋ค. ๋ด๊ฐ data.table์ ์ฌ์ฉํ๊ธฐ ์์ํ 1๋
์ ์ ์กด์ฌํ์ผ๋ฉด ํฉ๋๋ค. ์๋์ ๋ช ๊ฐ์ง ์์ ์ฌํญ์ ๊ณ ๋ คํ์ญ์์ค.
๋ง์ง๋ง์ ์์ฝ์์ i
์์ ( order
๋ฅผ ํตํด) ์ ๋ ฌํ ์ ์๋ค๊ณ ์ธ๊ธํ ์ ์์ต๋๋ค. ์ฒ์์ ์ด๊ฒ์ ์ธ๊ธํ ์๋ ์์ต๋๋ค. i
์์ ์ํํ ์ ์๋ ๋ณด๋ค ์ ๊ตํ ์กฐ์ธ์ด ํฌํจ๋์ง ์์ ํค๋ฅผ ํฌํจํ๋ค๊ณ ์ธ๊ธํ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ํตํด i
์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ธ๊ธํ ์ ์์ผ๋ฏ๋ก ๋
์๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฐพ์ ์ ์์ต๋๋ค. ๋์ค์ ํ์ดํผ๋งํฌ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
.SD ์น์
์์ "ํด๋น ๊ทธ๋ฃน"์ด๋ผ๊ณ ์ฐ์ง๋ง " by
์ฌ์ฉํ์ฌ ์ ์๋ ๊ทธ๋ฃน"์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ ๋ช
ํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ํ ์กฐ๊ธ ํ์ ์ํ๋ฉ๋๋ค.
๋์ณค์ ์๋ ์์ง๋ง .SD
์๋ by
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ .SD ์ด๋ก ์ ํํ ๋ค์ by
์ ๊ฐ ๊ณ ์ ํ ๋ณ์ ์กฐํฉ. ๊ทธ ๋ค์์ ์์๋๋ก ์ฒ๋ฆฌ๋ฅผ data.tables by
์์ ํจ์ (S)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์ j
. ์ฌ์ฉ์๊ฐ ํด๋น ์ฒ๋ฆฌ์ ์ผ๋ถ๋ก ์์ฑ๋ ์ผ๋ถ ์ธ๋ฑ์ค์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ํน์ ๊ธฐํธ๊ฐ ์์ง๋ง ์ด๋ ์๊ฐ ๋น๋คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ค๋ ์ ์ ์ธ๊ธํ ์๋ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ๋จ์ง ์ ์์ผ ๋ฟ์ ๋๋ค. ๊ทํ์ ๋ ธ๊ณ (๋ฐ Matt์ ๋ ธ๋ ฅ)์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
2015๋
1์ 17์ผ ํ ์์ผ ์คํ 6์ 22๋ถ, Mark Danese [email protected]
์ผ๋ค:
์ด๊ฒ์ ์ ๋ง ํ๋ฅญํฉ๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ๊ธฐ ์์ํ 1 ๋ ์ ์ ์กด์ฌํ์ผ๋ฉด ์ข๊ฒ ๋ค.
๋ฐ์ดํฐ.ํ ์ด๋ธ. ์๋์ ๋ช ๊ฐ์ง ์์ ์ฌํญ์ ๊ณ ๋ คํ์ญ์์ค.๊ฐ์ฌํฉ๋๋ค.
๊ทํ์ i์์ (์ฃผ๋ฌธ์ ํตํด) ์ ๋ ฌํ ์ ์๋ค๊ณ ์ธ๊ธํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
๋ง์ง๋ง์ ์์ฝ. ์ฒ์์ ์ด๊ฒ์ ์ธ๊ธํ ์๋ ์์ต๋๋ค.์ค ์ค๋ ! ์ข์ ์ . ๋งจ ์ฒ์์ "order(..)"๋ฅผ ์ถ๊ฐํด์ผ ํ๊ณ ,
์์ฝ์๋ ์ถ๊ฐ๋ฉ๋๋ค.๋ ์ ๊ตํ ์กฐ์ธ์ด ๊ฐ๋ฅํ๋ค๊ณ ์ธ๊ธํ ์๋ ์์ต๋๋ค.
์ปค๋ฒ๋์ง ์์ ํค๋ฅผ ํฌํจํ๋ i์์ ์ํ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๋น์ ์ด ์ธ๊ธ ํ ์ ์์ต๋๋ค
๋ ์๊ฐ ๋ ๊ณ ๊ธ์ ์ฐพ์ ์ ์๋๋ก i์ ์ฃผ์ ๊ธฐ๋ฅ
ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.๊ทธ๋, ํ ๊ฒ์ด๋ค.
๋์ค์ ํ์ดํผ๋งํฌ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
ํ์คํ์ง ์์ต๋๋ค. ์ด๊ฒ๋ค์ CRAN์ผ๋ก ํธ์๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ํค์์...SD ์น์ ์ "ํด๋น ๊ทธ๋ฃน"์ด๋ผ๊ณ ์ฐ์ง๋ง
"์ ์ํด ์ ์๋ ๊ทธ๋ฃน"์ด๋ผ๊ณ ๋งํฉ๋๋ค. ์ด๊ฒ์ ๋ํ ๋ค์๊ณผ ๊ฐ์ด ์กฐ๊ธ ํ์ ์ํ๋ฉ๋๋ค.
์.๋๋ ๊ทธ๊ฒ์ "ํ์ฌ ๊ทธ๋ฃน"์ผ๋ก ํธ์งํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋ถ๋ช ํ ์๋๋๋ค.. "by
by
์์ ์ ์๋ ํ์ฌ ๊ทธ๋ฃน " - ์ด๋ป๊ฒ ๋ค๋ฆฝ๋๊น?๋์ณค์ ์๋ ์์ง๋ง ์กฐ๊ธ ๋ ๋ช ํํ์ผ๋ฉด ์ข์์ ํ ๋ฐ.
.SD ๋ ๋ณธ์ง์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ .SD ์ด๋ก ์ ํํ ๋ค์
๊ฐ๊ฐ์ ๊ณ ์ ํ ๋ณ์ ์กฐํฉ์ ๋ํด data.tables ์ธํธ๋ฅผ ์์ฑํฉ๋๋ค.
์ ์ํด. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ data.tables๋ฅผ ๋ค์ ์์๋ก ์ฒ๋ฆฌํฉ๋๋ค.
j์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ณ์.๋น์ ์ด ๊ทธ๊ฒ์ ๋์น ๊ฒ ๊ฐ์์. .SD๊ฐ ์๋ ๋ธ๋ก ๋ฐ์ดํ ๋ฐ๋ก ์๋์ ์์ต๋๋ค.
์ค๋ช (์น์ 2e). ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ ์ธ๊ธํ ๋ด์ฉ์ ์ ํํ ์ค๋ช ํฉ๋๋ค...์ฌ์ฉ์๊ฐ
ํด๋น ์ฒ๋ฆฌ์ ์ผ๋ถ๋ก ์์ฑ๋ ์ผ๋ถ ์ธ๋ฑ์ค์ ์ก์ธ์คํ์ง๋ง
์ด๋ค์ ์๊ฐ ๋น๋คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.๋ง์.. ๊ทธ๊ฒ ๋ค๋ฅธ ํน์๊ธฐํธ๋ฅผ ๋์ ํ์ง ์๋ ์ด์ ์ผ.
๋ค์ ๋งํ์ง๋ง ์ด๊ฒ์ ๋จ์ง ์ ์์ผ ๋ฟ์ ๋๋ค. ๋น์ ์ ๋ ธ๋ ฅ(๊ทธ๋ฆฌ๊ณ Matt's)์
๊ฐ์ฌํฉ๋๋ค.์ข์ ์ ์. ๋ค๋ฅธ ๋น๋คํ ์ด ์ ๋ก๋๋๋ฉด ๋ค์ ์์ฑํ๊ฒ ์ต๋๋ค.
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Rdatatable/data.table/issues/944#issuecomment -70375167
.
ํ์คํ์ง ์์ต๋๋ค. ์ด๊ฒ๋ค์ CRAN์ผ๋ก ํธ์๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ํค์์..
AFAIK vignettes
๋๋ ํ ๋ฆฌ์ Rmd
๊ฐ ํฌํจ๋ CRAN์ ํจํค์ง๋ฅผ ํธ์ํ๋ฉด ๋น๋คํธ ๋น๋ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์๋์ผ๋ก ๋น๋๋์ง๋ง CRAN์ ์์ค ์ฝ๋์๋ ์ด๋ฏธ ๋น๋๋ ๋น๋คํธ(html)๊ฐ ํฌํจ๋ฉ๋๋ค. CRAN ๋น๋/์ฒดํฌ์์ ์จ ์ฌ๋์ด ์๋๋ผ ๋น์ ์
๋๋ค.
CRAN์ ๋ง์ ์ฌ์ฉ์๊ฐ ๋ฌธ์/์์ต์๋ฅผ ์ฐพ๋ ์ฒซ ๋ฒ์งธ ์ฅ์์ด๊ธฐ ๋๋ฌธ์ ๋น๋คํธ๋ฅผ ์ํ ์ข์ ์ฅ์์ด๋ฏ๋ก CRAN์ ์๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ค์ ํ์ดํผ๋งํฌ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ๊ฑด ํ์คํ์ง ์์ต๋๋ค. ์ด๊ฒ๋ค์ CRAN๊ณผ WIKI์๋ ํธ์๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋จ์ผ ํด๋ ๋งํฌ๊ฐ CRAN์์ ์๋ํ์ง ์์ต๋๊น? ๋๋ ์ค์ ๋ก ๊ฑฐ๊ธฐ์ ์๋ฌด๊ฒ๋ ๋ฃ์ง ์์์ง๋ง ์ด ๋น๋คํธ ๋ ์๋ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ํด๋์ ์๋ ์ฌ๋ฌ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฐ๊ฒฐํ๊ณ R์์ ์ ๋๋ก ์๋ํฉ๋๋ค(๋ถ๋ช ํ ๋งํฌ๋ R์์ ์จ ๊ฒ์ด ์๋์ง๋ง ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๋น๋คํธ ๋งํฌ๋ฅผ ์คํํ๋ฉด ์ผํ๋ค.
_์ฐธ์กฐ ์๋ฏธ๋ก _ ๋น๋คํธ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์ด ๋ชจ๋ ์ผ์ ํด์ฃผ์ ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋น๋คํธ์์ ๋ค๋ฃฐ ๋ด์ฉ์ ๋ํ ๋ ๋ค๋ฅธ ์ ์ - ์์ ์ ํจ์ ๋ด์์ data.table ์ฌ์ฉ. ํจํค์ง๋ฅผ ์์ฑํ์ง ์๊ณ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์์ ์ ์๋ํํ๋ ค๊ณ ํฉ๋๋ค. ๋ด๊ฐ ์ ์ดํดํ์ง ๋ชปํ ๋ช ๊ฐ์ง ํธ๋ฆญ์ด ์์ต๋๋ค. ๋ํ ์ด ์ฃผ์ ์ ๋ํ ๊ฒ์๋ฌผ์ด ์์ผ๋ฉด ๋งํฌ๋ฅผ ๋ณด๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, "์ ์ฉํ" ์คํ ์ค๋ฒํ๋ก ๊ฒ์๋ฌผ์ ๋์ดํ๋ ๋น๋คํธ๋ ๋น๋คํธ์ ํฌํจํ๊ณ ์ถ์ง ์์ ์ฃผ์ ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ทธ์ ์๋ฑํ ์๊ฐ๋ค.
๋ ๊ฐ์ง ์๊ฐ:
๊ฐ์ฌ ํด์.
@arunsrinivasan ์๋, ๋๋ ๊ทธ๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ค๋ฅธ ์ฑ ๊ฐํผ
_Keys ๋ฐ ๋น ๋ฅธ ์ด์ง ๊ฒ์ ๊ธฐ๋ฐ ๋ถ๋ถ ์งํฉ_ ๋น๋คํธ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์์ฃผ ์ข์. ๋๋ ์ด ์ฝํ๋ฅผ ์ข์ํ๋ค. ๊ณ ๋ ค ์ฌํญ์ ๋ํ ๋ช ๊ฐ์ง ๋น ๋ฅธ ์๊ฒฌ์ ๋๋ค.
ํ ์ด๋ฆ์ด ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ ์ธ์ํ๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น? ์๋๋ฉด j์ ํน์ ์ฐ์ฐ์(์: .N, .I ๋ฑ)๊ฐ ์ฌ์ฉํฉ๋๊น? data.table์์ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ธ๋ฑ์ค๋ก๋ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋๋ ํญ์ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ํ ์ด๋ฆ์ ๊ฐ์ ํ๋ ๋ชฉ์ ์ผ๋ก ํผ๋์ค๋ฌ์ํ์ต๋๋ค.
๋ ๋ฒ์งธ ํค์๋ง ์ก์ธ์คํ ๋ ์ฒซ ๋ฒ์งธ ํค์ unique
๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถ๋ ฅ์ ๋ฐ๋ณต๋๋ ํ์ด ๋ง์ด ๋ํ๋ฉ๋๋ค. ๊ทธ๋ ์ฃ ? ๋ปํ ์๋ ์์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๋งํ๊ณ /๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ชจ๋ ํค๋ฅผ ์ธ์ฉํด์ผ ํฉ๋๊น? ์ซ์(์ ์)๋ผ๋? ์ซ์๋ฅผ ํค๋ก ์ฌ์ฉํ ์ ์์ต๋๊น? ์ฃผ์ํ ์ฌํญ์ด ์์ต๋๊น?
ํค ์ด์ NA๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๊ฒ๋ค์ ๊ฒ์ํ๊ณ ๋ฐ๊ฟ ์ ์์ต๋๊น (์์์์ ๊ฐ์ด 24๋ฅผ 0์ผ๋ก ๋ฐ๊พธ์์ต๋๊น?
keyby
๊ฐ _output_ data.table(๊ทํ์ ์์์ ans
)์ ์ ์ฉ๋๊ณ ์
๋ ฅ data.table(๊ทํ์ ์์์ flights
)์ด ์๋์ ์ค๋ช
ํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ฒกํฐ๋ฅผ ํค์ ์ ๋ฌํ ์ ์์ต๋๊น? ์ฆ, ๋น์ ์ ๋ง๋ค ์ ์์ต๋๋ค airport <- c("LGA", "JFK", "EWR")
์ฌ์ฉํ airport
์ง์ ์์ i
ํ๋จ ๊ทผ์ฒ์ ์์? ์ด๊ฒ์ ๋ณํฉ์ ์ํด ๋ค๋ฅธ data.table์ ์ ๋ฌํ๋ ์์ด๋์ด๋ฅผ ์ค์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
"๋์ํ๋"("๋์ํ๋")์ ์คํ. "origin == "LGA" ๋ฐdest == "TPA"์ ํด๋นํ๋ ํ ์ธ๋ฑ์ค๋ ํค ๊ธฐ๋ฐ ํ์ ์งํฉ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ธ์ต๋๋ค."๋ผ๊ณ ์ฐ๋ ๋ฒกํฐ ์ค์บ ์น์ ์์ ๋ฐฑํฑ ์ค ํ๋๊ฐ ๋๋ฝ๋์์ต๋๋ค.
@markdanese ๊ด๋ จ
๋ ๋ฒ์งธ ํค์๋ง ์ก์ธ์คํ ๋ ์ฒซ ๋ฒ์งธ ํค์ unique๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
flights[.(unique(origin), "MIA")]
๋ ๋์ ์ค๋ช
์ ์ ์ํ๊ฑฐ๋ ์ฌ๋ฌ ์ด ํค์ ๋ ๋ณต์กํ ์ฌ์ฉ๋ฒ์ ์์ง ๋ชปํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋น์ ์ ๋จ์ํ ์ด์ง ๊ฒ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค dest
ํค ์ธ ๊ฒฝ์ฐ c(origin, dest)
, ๋น์ ์ดํด์ผ c(dest, origin)
์ด์ง ๊ฒ์์ ์ฌ์ฉํ๊ธฐ dest
. .(unique(origin), "MIA")
์ฌ์ฉํ๋ฉด ํค์ ์ฒซ ๋ฒ์งธ ์ด์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ์ ๊ณตํ ๋ค์ ๋ ๋ฒ์งธ ์ด์ ์ ํ์ ๊ฐ์ ์ ๊ณตํ์ฌ ์ด์ง ๊ฒ์์ ์ฌ์ฉํฉ๋๋ค.
ํค์ ์ ํ์ ์ด๋ง ์ฌ์ฉํ๋๋ก ํ์ฅ์ ๋ง๋ค์์ต๋๋ค. ๊ฐ๋จํ ์๋ฅผ ๋ณด๋ ๊ฒ๋ ์ดํด์ ๋์์ด ๋ ๊ฒ์
๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ด๋ถ data.table ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋๊ฑฐ๋ data.table ๋ณด์กฐ ํค์ ๊ฒฐํฉ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ๋งํผ ํ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ด ํ์ฅ์ data.table ๋ง์คํฐ์ ๋ํ PR์ด ๋ ์ค๋น๊ฐ ๋์ง ์์์ต๋๋ค.
์ซ์๋ฅผ ํค๋ก ์ฌ์ฉํ ์ ์์ต๋๊น?
์ซ์๋ฅผ ํค๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ Keys and their properties
์น์
์ ์ธ๊ธ๋์ด ์์ต๋๋ค.
์ฃผ์ํ ์ฌํญ์ด ์์ต๋๊น?
ํ์คํ์ง ์์ง๋ง setNumericRounding
๋ ์ซ์ ํค์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ๋น๋คํธ์์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
ํค ์ด์ NA๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๊ฒ๋ค์ ๊ฒ์ํ๊ณ ๊ต์ฒด ํ ์ ์์ต๋๊น?
์, is.na()
๋ ๋ฐ์ด๋๋ฆฌ ๊ฒ์์ ์ฌ์ฉํ๋๋ก ์ต์ ํ๋์ด ์์ต๋๋ค. data.table(a=c(1,NA_real_),b=c("a","b"),key="a")[.(NA_real_), .SD ,verbose=TRUE]
์๋
๋ํ @arunsrinivasan ์ ์คํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ผ์นํ๋ ๊ฐ ์ฐพ๊ธฐ
Jan์๊ฒ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ๋์์ด ๋ฉ๋๋ค. ๋๋ ์๋ก์ด ์ฌ์ฉ์๊ฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋๋ก ๋น๋คํธ์์ ๊ฐ๋ตํ๊ฒ ์ธ๊ธํ ์ ์๋ ๊ฒ์ผ๋ก ์ด๋ฌํ ์ง๋ฌธ์ ์ ๊ณตํ์ต๋๋ค. ๋ฌธ์๋ฅผ ์ฝ๋ ๋์ (์๋นํ ์๋ก์ด ์ฌ์ฉ์๋ก์) ๋ง์์ ๋ ์ค๋ฅธ ๊ฒ๋ค์ ๋๋ค. ๋๋ ์ค์ ๋ก ์ฝ๋์ ๊ธฐ์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ํ๋ฅผ ๋์์ ๊ธฐ์ฌํ ์ ์๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค.
2015๋
1์ 23์ผ ๊ธ์์ผ ์คํ 8์ 48๋ถ, Mark Danese [email protected]
์ผ๋ค:
์์ฃผ ์ข์. ๋๋ ์ด ์ฝํ๋ฅผ ์ข์ํ๋ค. ์ ๋ํ ๊ฐ๋จํ ์๊ฒฌ
๊ณ ๋ ค ์ฌํญ.ํ ์ด๋ฆ์ด ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ ์ธ์ํ๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น? ์๋๋ฉด
j์ ํน์ ์ฐ์ฐ์(์: .N, .I ๋ฑ)์์ ์ฌ์ฉํฉ๋๊น? ๋๋ ๊ทธ๋ค์ด
data.table์์ ์ฌ์ฉ๋์ง๋ง ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋์ง๋ ์์ต๋๋ค. ๋๋ ํญ์ ์์๋ค
๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ํ ์ด๋ฆ์ ๊ฐ์ ํ๋ ๋ชฉ์ ์ผ๋ก ํผ๋๋ฉ๋๋ค.ํค์ ๊ทธ ์์ฑ ๋ฐ๋ก ์์ ์น์ 1a์ ์ด์ ๋ํ ๋ต์ด ์์ต๋๋ค.
data.frames์์ Data.tables _inherit_.๋ ๋ฒ์งธ ํค์๋ง ์ก์ธ์คํ ๋ ์ฒซ ๋ฒ์งธ ํค์ unique๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ง์ฝ ๋๋ผ๋ฉด
๊ทธ๋ ์ง ์์ต๋๋ค. ์ถ๋ ฅ์ ๋ฐ๋ณต๋๋ ํ์ด ๋ง์ด ๋ํ๋ฉ๋๋ค. ๊ทธ๋ ์ฃ ? ์ด์ฉ๋ฉด ๋ปํ,
ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๋ง/๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ด๊ฒ์ "์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์์ต๋๊น?"์ ์ ํํ ์ค๋ช
๋์ด ์์ต๋๋ค. NS
๋ด๊ฐ ๊ธฐ์ด๋ฅผ ๋ค์ง๋ ์ด์ ์น์
์ ์ฐธ์กฐํ์ญ์์ค.
์ด๊ฒ์ ์ค๋ช
ํฉ๋๋ค.
๋ชจ๋ ํค๋ฅผ ์ธ์ฉํด์ผ ํฉ๋๊น? ์ซ์(์ ์)๋ผ๋? ์ฌ์ฉํ ์ ์์ต๋๊น?
ํค๋ก ์ซ์? ์ฃผ์ํ ์ฌํญ์ด ์์ต๋๊น?2d์ ์ ์ ์ด์ด ์๋ ์๊ฐ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค
์ถฉ๋ถํ?ํค ์ด์ NA๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๊ฒ๋ค์ ๊ฒ์ํ๊ณ ๊ต์ฒด ํ ์ ์์ต๋๊น?
๊ทธ๋ค (๋น์ ์ด 24๋ฅผ 0์ผ๋ก ๋์ฒด ํ ๊ทํ์ ์์์ ํ ๊ฒ์ฒ๋ผ?์ข์ ์ง์ . ์ด๊ฒ์ด ๋ฒกํฐ ์ค์บ๊ณผ์ ์ฐจ์ด์ ์ ๋๋ค. ์ด๊ฒ์ ์ถ๊ฐํ๋ ค๊ณ ํ ๊ฒ์ ๋๋ค.
keyby๊ฐ _output_ data.table(
๊ทํ์ ์์์ ans) ์ ๋ ฅ data.table์ด ์๋
์์).'keyby'๋ ์ด๋ฏธ ์ฒซ ๋ฒ์งธ ๋น๋คํธ์์ ๋ ผ์๋์์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ด
์ถ๊ฐํ ์ ์์ต๋๋ค.๋ฒกํฐ๋ฅผ ํค์ ์ ๋ฌํ ์ ์์ต๋๊น? ์ฆ, ๊ณตํญ์ ๋ง๋ค ์ ์์ต๋๊น?
<- c("LGA", "JFK", "EWR") and useairportdirectly ini` in your example
๋ฐ๋ฅ? ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ
๋ณํฉ์ ์ํด data.table์ ์ ๋ ฅํฉ๋๋ค.๋ค์ ์น์ ์ ๋ด์ฉ์ ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์กฐ์ธ์ผ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
"๋์ํ๋"("๋์ํ๋")์ ์คํ. ๋ฐฑ ํฑ ์ค ํ๋๋
"ํ ์ธ๋ฑ์ค
origin == "LGA" ๋ฐdest == "TPA"`์ ํด๋นํ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ป์ต๋๋ค.
๊ธฐ๋ฐ ํ์ ์งํฉ์ ๋๋ค."๊ฐ์ฌ ํด์.
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Rdatatable/data.table/issues/944#issuecomment -71253738
.
์ด ์ฝํ์ ๋ํ ํ๋ฅญํ ์์
์
๋๋ค!
๋ด ์๊ฒฌ์ด ๋ฆ์๊ฑฐ๋ ์ด๋ฏธ ํฌํจ๋์์ ์ ์์ต๋๋ค.
set
๋ฅผ ์ฌ์ฉํ๋ ๋ค์ํ๊ณ ํ๋ถํ ๋ฐฉ๋ฒ. ๋ํ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ด์ ์ ๋ํ ์ค๋ช
์ ๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค( ์ฌ๊ธฐ ์ฐธ์กฐ).for (j in valCols)
set(dt_,
i = which(is.na(dt_[[j]])),
j = j,
value= as.numeric(originTable[[j]]))
Wiki์ Reshape ๋น๋คํธ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๋ฐ์ด๋ ๊ธฐ๋ฅ์ฑ๊ณผ ๋น๋คํธ! ์๋ฃฌ ๊ฐ์ฌํฉ๋๋ค
2015๋ 6์ 23์ผ ํ์์ผ 21:02 Arun [email protected]์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋ชจ์ ๋ณ๊ฒฝ ๋น๋คํธ ์ถ๊ฐ๋จ
https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reshape.html
์ํค https://github.com/Rdatatable/data.table/wiki/Getting-started.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/Rdatatable/data.table/issues/944#issuecomment -114678716
.
patterns
๋ํ ๋จ์๊ฐ ์ข์ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ดํธ ๋น๋คํธ
์ด๋ฌํ ๋ช ๋ น์ ์ฌ์ฉํ๋ ค๋ฉด reshape2๋ฅผ ๋ก๋ํด์ผ ํ์ง ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ธ๊ธํด์ผํฉ๋๋ค. ๋๋ "์์ด๋์์ ๋กฑ์ผ๋ก"์ "๋กฑ์์ ์์ด๋๋ก"์ ์ด์ ์ ๋ง์ถ๋ ๊ฒ์ ์ ๋ง ์ข์ํฉ๋๋ค. ๋๋ reshape2์ ๊ตฌ๋ฌธ์ ์ ๋์ ์ผ๋ก ์ซ์ดํฉ๋๋ค(์๋ฅผ ๋ค์ด, "make_wide"๊ฐ "dcast"๋ณด๋ค ํจ์ฌ ๋ ๋ช ํํ๋ค๊ณ ์๊ฐํฉ๋๋ค). ์ด๋ฌํ ์ด์ ๋ก ์น์ ํค๋๋ฅผ "melting data.tables" ๋ฐ "casting data.tables"๋ก ์ฐ์ง ์์ต๋๋ค. ์ด๋ reshape2 ํจํค์ง์ ์ต์ํ ์ฌ๋๋ค์๊ฒ๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋๋ ์์ ๊ฐ์ด ๋ ๋ณดํธ์ ์ธ ํค๋๋ก ์์ํ ์ ์์ต๋๋ค("long to wide").
๊ทธ๋งํ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ data.table์ด ๋ก๋๋ ์ํ์์ ์๋ก์ด R ์ธ์
์ ์ฌ์ฉํ์ฌ ๋น๋คํธ์ ์ฒซ ๋ฒ์งธ ๋ผ์ธ์ ์คํํ ์ ์์ต๋๋ค. ์ด์ ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง(๋ชจ๋๋ "wb"๊ฐ ์๋๋ผ "w"์ฌ์ผ ํจ)
DT = fread("https://raw.githubusercontent.com/wiki/Rdatatable/data.table/data/melt_default.csv")
๋ณด๊ณ
Error in download.file(input, tt, mode = "wb") : unsupported URL scheme
ํญ์ ๊ทธ๋ ๋ฏ์ด, ์ด๋ ๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ์ ์ฉํฉ๋๋ค.
@markdanese ํ๋ฅญํ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
reshape2
๋ data.table v1.9.6
๋ถํฐ ํ์ํ์ง ์์ต๋๋ค. ๋น๋คํธ์์๋ ์ด๋ฅผ ์
๋ฐ์ดํธํ์ต๋๋ค.https
์์ ๊ธฐ๋ฅ fread
(STABLE) ๋ฒ์ ์์ ๊ตฌํ๋ฉ๋๋ค. ๋ฐ๋ผ์ v1.9.4
ํ์ฌ ํด๋น ์ฝ๋๋ฅผ ์์ง ์คํํ ์ ์์ต๋๋ค. ์
๋ฐ์ดํธํ๊ฑฐ๋ ์กฐ๊ธ ๊ธฐ๋ค๋ฆฌ์ญ์์ค :-).๊ฒฉ๋ คํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@jangorecki patterns()
์(๋ฅผ) ๋ด๋ณด๋ด์ง ์์ต๋๋ค. [.data.table
์ด์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ :=
, .SDcols
๋ฑ์ ์ฉ๋๊ฐ ํ์ฅ๋ฉ๋๋ค.
@arunsrinivasan ์ฌ์ ํ patterns
๋ํ ๋งค๋ด์ผ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. :=
๋ํ ๋งค๋ด์ผ๊ณผ ๊ฐ์ ๋ฐฉ์์
๋๋ค. ๋ง์ ์ฌ๋๋ค์ด (๋ด ์๊ฐ์) ์ฝ๋ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด ?fun
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค.
_join_ vignette์์ data.table ์กฐ์ธ์ ํด๋น SQL ์์ ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ ์ ์์ผ๋ฏ๋ก db ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
ํด๋น SQL ๋ฌธ์ ์๋ ์๋ฅผ ๋ค์ด SO ๋ฐ์ดํฐ ํ๋ ์(๋ด๋ถ, ์ธ๋ถ, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ)์ ๊ฒฐํฉ(๋ณํฉ)ํ๋ ๋ฐฉ๋ฒ ์์ ์ฐพ์ ์ ์์ต๋๋ค
"๋๋ฏผ" ์ฝํ๋ ์์ผ๋ฉด ์ข์ ํ ๋ฐ --
data.table
Stata
์ฌ์ฉ์๋ฅผ ์ํ data.table
data.table
SQL
์ฌ์ฉ์์ ๊ฒฝ์ฐ data.table
Matlab
์ฌ์ฉ์์ ๊ฒฝ์ฐ data.table
Python
/ pandas
์ฌ์ฉ์์ ๊ฒฝ์ฐ dplyr
์ฌ์ฉ์์ ๊ฒฝ์ฐ์๋ data.table
๋ฑ. ๋น ๋ฅธ ์์ ๊ฐ์ด๋์ ๋น์ทํ์ง๋ง ์ด๋ฏผ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
Secondary indices and auto indexing
๋น๋คํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ด๊ฐ ์์
ํ ๋ค์ ๋น๋คํธ๋ฅผ ์ํด ํ์ ์งํฉ์์ ์กฐ์ธ์ผ๋ก ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
@arunsrinivasan ์ _indices_์ ๊ด๋ จํ์ฌ _secondary_๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๋ ์ ์ ํ์ง ์์ต๋๊น? ์ค์ํ _keys_์ ์ฌ์ฉ๋์์ต๋๋ค. ์ด์ _index_ ์ด๋ฆ ์ง์ ์ผ๋ก ์ ํํ๋ฉด ์ค๋ณต๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
@jangorecki "๋ณด์กฐ"๊ฐ ํค(๊ธฐ๋ณธ)์์ ๊ด๊ณ์ ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2์ฐจ ์ ๋ ฌ
๋ ๋์ ์ค๋ช ์ ๋๊น?
ํ์ง๋ง ์ด๋ฏธ _index_ ๋จ์ด๊ฐ ์ฌ์ฉ๋์์ผ๋ฏ๋ก _secondary sorting_๋ณด๋ค ๋ ๋ฉ์ง๊ฒ ๋ณด์ ๋๋ค. :)
์ด๋ฆ์ "์๋ ์ธ๋ฑ์ฑ"์ผ๋ก ์ง์ ํ์๊ฒ ์ต๋๊น? IMO "2์ฐจ ์ ๋ ฌ ๋ฐ ์๋ ์ธ๋ฑ์ฑ"์ด ๋ ์ ์ตํ๊ฒ ๋๊ปด์ง๋๋ค.
_auto_๋ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ _auto_์ ๋ํด ์๋ํด์ผ ํ๊ณ ์๋์ผ๋ก ์์ฑ๋ ์ธ๋ฑ์ค์ ์ฌ์ฉ์ ์ํด ์๋ํด์ผ ํ๋ฏ๋ก - #1422๊ฐ ํด๋น ๋ฌธ์ ์ ๋ํ ํ์ฌ ์ ํ ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ _auto_๋ ๋ค์ ์คํด์ ์์ง๊ฐ ์์ต๋๋ค.
์ ๊ฒ ์ด์. ๋๋ ์ฌ์ ํ ๋น์ ์ด ์ ํธํ๋ ๋์์ ๋์น๊ณ ์์ต๋๋ค. ๋จ์ง "์ธ๋ฑ์ค"์ธ๊ฐ์?
์๋ฒฝํ์ง๋ ์์ง๋ง _๋ณด์กฐ ์ธ๋ฑ์ค_๋ณด๋ค ์ ํธ๋จ
๋๋ ์ด ์ต์ ๋น๋คํธ๋ฅผ ์์ฃผ ์ข์ํ๋ค. ๋ด ์ ์ผํ ์๊ฐ์ ์ด๋ค ์ ํ์ ์์ ์ผ๋ก ์ธํด ์ธ๋ฑ์ค๊ฐ ์ญ์ ๋๋์ง ์ธ๊ธํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ด ํ ์คํธ์์ ํ ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ธ๋ฑ์ฑ๋ ์ด๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋๋ "on"์ ์๊ฐ ์ ๋ง ๋์์ด ๋๋ค๊ณ ์๊ฐํ์ต๋๋ค.
@markdanese ์ข์ ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
v1.9.8 ๋ฆด๋ฆฌ์ค์ ํจ๊ป ์
๋ฐ์ดํธ๋ ์ฝํ๋ฅผ ์ ๊ณตํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
"์ฐธ์กฐ ์๋ฏธ ์ฒด๊ณ"๋ copy()
ํจ์์ ์์ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ์๋ก์ด ๊ธฐ๋ฅ(ํนํ ๋ด๊ฐ ์ ๋ง ๊ด์ฌ์ด ์๋ ํจ์ ๋ด๋ถ)์ ๋ํ๋
๋๋ค.
"๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊น์ ๋ณต์ฌ ๋์ ์์ ๋ณต์ฌ๋ฅผ ํตํด ์ด ๊ธฐ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ฌ์ค, ์ฐ๋ฆฌ๋ ์ด ๊ธฐ๋ฅ์ v1.9.8 ์
๊ทธ๋ฌ๋ ๋์์ธ ๋น๋คํธ๊ฐ ๋๋ฝ๋์์ผ๋ฉฐ ๋งํฌ๊ฐ ์ค๋๋ ๋ฌธ์ ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ์ฐธ๊ณ ์ค๋ช
์๋ ๋น๋คํธ์ ์ ๊ณต๋ ๊ฒ๋ณด๋ค copy()
์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๋จธ์ง ๋น๋คํธ๋ copy
์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด ๋น๋คํธ๋ฅผ ๊ณง ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ด๋ถ ๋น๋คํธ์ ๊ฒฝ์ฐ +1์ ๋๋ค. ๋๋ (๊ทธ๋ฆฌ๊ณ ๋ช๋ช ๋ค๋ฅธ ์ฌ๋๋ค๋) C ์ชฝ์ ์ฝ๊ฐ์ ๊ธฐ์ฌ๋ฅผ ํ๋ ๋ฐ ๊ฝค ๊ด์ฌ์ด ์์ง๋ง, 35,000์ค์ C ์ฝ๋์ ์ฝ๊ฐ ๊ฒ์ ๋จน๊ณ ์๋ค. ๊ทธ๊ฒ๋ง์ผ๋ก๋' -- ๋ด๋ถ์ ๋ํ ์๊ฐ๋ ๋๋ผ์ด ์ผ์ ํ ์ ์์ต๋๋ค!
์กฐ์ธ ๋น๋คํธ์ ๊ฒฝ์ฐ:
๋น๋คํธ์ ๋ํ ๊ธฐ์ฌ๊ฐ (๋์ ๊ฐ์) ์ฝ๋๊ฐ ์๋ ๊ธฐ์ฌ์๋ก๋ถํฐ ์๋ฝ๋๋์ง ๋ฌผ์ด๋ณด๊ณ ์ถ์์ต๋๋ค. ์ ๋ ์ด๊ธฐ์ ์๋นํ ๋ฌธ์ ๊ฐ ์์๊ณ Stackoverflow์ ๋ํ Arun์ ๋ต๋ณ์์ ์๋ฃจ์ ์ ์๋ด๋ฐ์๊ธฐ ๋๋ฌธ์ ์กฐ์ธ ๋น๋คํธ์ ๊ธฐ์ฌํ๋ ๋ฐ ํนํ ๊ด์ฌ์ด ์์ต๋๋ค. ํ์ฉ๋๋ ๊ฒฝ์ฐ ๊ทธ๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋ฐ๊ณ ์ถ์ต๋๋ค.
@arunsrinivasan IDateTime vignette
ํฌ์ธํธ๊ฐ ์์ต๋๋ค. : ์๋ง๋ ๊ทธ๊ฒ์ @jangorecki์ ์ํด ์ ์๋ณด๋ค ์ผ๋ฐ์ ์ธ ๋คํธ์ ํฌํจ ํ ์ ๋คํธ : - ์ฃผ๋ฌธ ๊ด์ฐฐ ์๊ณ์ด ?
๋ํ jan์ด ์ ์ํ ๋ช ๊ฐ์ง ์ฃผ์ ์ ๋ํ ์ฒซ ๋ฒ์งธ ์ด์์ ์ค๋นํ๊ณ ์์ต๋๋ค . ์๋ง๋ ๊ทธ๊ฒ์ ์ผ๋ถ๊ฐ ์กฐ์ธ ๋น๋คํธ์๋ ๊ด๋ จ์ด ์์ ์ ์์ต๋๊น? ๋๊ตฐ๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
@zeomal ๊ทธ๋ฌํ ๊ธฐ์ฌ๋ ๋งค์ฐ ๊ฐ์น ์๊ณ ๋๋จํ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค!
@MichaelChirico , ๊ฐ์ฌํฉ๋๋ค. @Henrik-P, ์ผ๋ฐ ์กฐ์ธ์ ๋ํ ๋ธ๋ฆฌํ์ด ํฌ๊ด์ ์ ๋๊น? ์ฆ, ์๊ณ์ด์ ๋ ์ค์ ์ ๋ ๊ฒ์ ๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ ์ ์์ํ ์ ์์ต๋๋ค. ์์ง ๋กค๋ง ์กฐ์ธ์ ์ฌ์ฉํ์ง ์์์ผ๋ฏ๋ก ์ง์์ด ์์ต๋๋ค. :)
@zeomal ์กฐ๋ง๊ฐ 1์ฐจ ์ด์์ ์
๋ก๋ํ ์ ์๊ฒ nomatch = NA
ํฉ๋๋ค. (maaaybe๋ nomatch = NULL
๋ฅผ ์ฌ์ฉํ ๋น ๋ฅธ ์์ด๊ธฐ๋ ํจ)
๋ด ์๊ฐ์ ์ด ๊ฐ๋จํ ์กฐ์ธ์ด ๋ฌธ์ ์ ๋ํ ์ปจํ ์คํธ์ ๋๋์ ์ ๊ณตํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋กค๋ง ๋ฐ ๋น๋๋ฑ ์กฐ์ธ ๋ฑ์ ๋ํ ๋ค์ ์น์ ์์ ๋ ์ฒ ์ ํ๊ฒ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
๊ธฐ๊บผ์ด ๊ธฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! .
๋น๋คํ
์ ์ค๋นํ๋ฉด์ ์ฐธ๊ณ ๋ก ๊ฐ์
ํ๋ ๊ฒ์ ๋ํด ์ง๋ฌธ์ด ์์ต๋๋ค. X[Y, new_col := old_col]
๋ X
์ ๋ํ ๊ธฐ์กด์ ์ผ์ชฝ ์กฐ์ธ๊ณผ ์ ์ฌํ ์์
์ ์ํํฉ๋๋ค. ์ฌ๋ฌ ๊ฒฝ๊ธฐ๊ฐ์๋ ๊ฒฝ์ฐ์๋ Y
์ ํค๋ค X
, ํค์ ๋ง์ง๋ง (๋๋ ์ ?) ์ผ์นํ๋ ๊ฐ์ด ์ ์ง๋๋ค. ์ด๊ฒ์ ์ด๋๊ฐ์ ๋ช
์์ ์ผ๋ก ๋ฌธ์ํ๋์ด ์์ต๋๊น? ๋๋ ๊ทธ๊ฒ์ ๋ง๋ฌ์ ๋ ์ด๊ฒ์ ๋ค์ ๊ฒ์ํ๋ ค๊ณ ์๋ํ์ง๋ง ๊ทธ ์ด์ ๋๋ฌธ์ ์ฐธ์กฐ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์ ๋ํ ์ดํด์ ์์กดํด์ผํ์ต๋๋ค. ์ฌํ ๊ฐ๋ฅํ ์๋ฅผ ๋ค๋ฉด,
> X = data.table(a = c(1, 2, 3), m = c("a", "b", "c"))
> Y = data.table(b = c(1, 1, 4), n = c("x", "y", "z"))
> X[Y, new_col := i.n, on = "a == b"]
a m new_col
1: 1 a y
2: 2 b <NA>
3: 3 c <NA>
# an ideal left join - expected behaviour per a new user, given below
# not possible because updating row by reference isn't implemented
a m new_col
1: 1 a x
1: 1 a y
2: 2 b <NA>
3: 3 c <NA>
์ด๋ ์์๋ ๋์์ด์ง๋ง ์ ์ฌ์ฉ์์๊ฒ๋ ์ ํํ์ง ์์ต๋๋ค. mult
๋ ์ถ๋ ฅ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด๋ฅผ ๋ฌธ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น? ์ ์ ํ ์ผ์ชฝ ์กฐ์ธ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก merge
๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น?
@zeomal ๋์ #2181ํธ์ ์กฐ์ธ ๋น๋คํธ์ ๋ํ ํฅํ ์ง๋ฌธ์ ๊ฒ์ํ์ธ์. ๋ ์ข์ ๊ณณ์ธ ๊ฒ ๊ฐ์ต๋๋ค. set
๋ฌธ์ํ๋์ด ์์ต๋๋ค.
@zeomal ์ผ๋ฐ(equi) ์กฐ์ธ์ ๋ํ ๋ด ์น๋ฃ๊ฐ ์ผ๋ง๋ ์งง์์ง ํ์ธํ๋ ค๋ฉด ์๊ณ์ด ๋น๋คํธ์ PR์ ๊ฒ์ํ์์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.