Data.table: ๋น„๋„คํŠธ

์— ๋งŒ๋“  2014๋…„ 11์›” 11์ผ  ยท  54์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Rdatatable/data.table

HTML ์‚ฝํ™” ์‹œ๋ฆฌ์ฆˆ:

v1.9.8 ์˜ˆ์ •

  • [ ] data.table์˜ ๋น ๋ฅธ ๋‘˜๋Ÿฌ๋ณด๊ธฐ
  • [x] [ํ‚ค ๋ฐ ๋น ๋ฅธ ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ•˜์œ„ ์ง‘ํ•ฉ](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-keys-fast-subset.html)
  • [x] [๋ณด์กฐ ์ธ๋ฑ์Šค ๋ฐ ์ž๋™ ์ธ๋ฑ์‹ฑ](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-secondary-indices-and-auto-indexing.html)
  • [ ] ๋น„๋„คํŠธ๋ฅผ ๊ฒฐํ•ฉ ํ•ฉ๋‹ˆ๋‹ค. a) _joins_ ๋Œ€ _subsets_ -- ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์กฐ์ธ + ์กฐ๊ฑด๋ถ€/๋น„๋™๋“ฑ ์กฐ์ธ, ๋กค๋ง ๋ฐ ๊ฐ„๊ฒฉ ์กฐ์ธ์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. b) by=.EACHI, ๊ฐ€์ž… + ๊ธฐ๋Šฅ ์—…๋ฐ์ดํŠธ. c) #1038์— ์ œ์ถœ๋œ i.col ์‚ฌ์šฉ์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค. d) #1232์˜ ์„ฑ๋Šฅ/์žฅ์ ์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • [ ] ์ปค๋ฒ„ get() ๋ฐ mget() .
  • [ ] FAQ(#1623)์—์„œ on= ์ธ์ˆ˜ ๊ทผ๊ฑฐ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • [ ] FAQ 5.3์€ ์ดˆ๊ณผ ํ• ๋‹น์„ ๋ณต์›ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” _shallow_ ๋ณต์‚ฌ์ž„์„ ์–ธ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. #1729์— ๋งํฌํ•ด ์ฃผ์‹  Jan์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค

  • [ ] data.table ๋‚ด๋ถ€, ์„ฑ๋Šฅ ์ธก๋ฉด ๋ฐ _ํ‘œํ˜„๋ ฅ_
  • [ ] ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ฝ๊ธฐ( fread + rbindlist ), ์ˆœ์„œ ์ง€์ •, ์ˆœ์œ„ ์ง€์ • ๋ฐ ์„ค์ • ์ž‘์—…
  • [ ] IDateTime ๋น„๋„คํŠธ
  • [ ] data.table() ์™€ data.frame() ์˜ ์ฐจ์ด์ ์„ ์–ด๋”˜๊ฐ€์— ๋ฌธ์„œํ™”ํ•˜์‹ญ์‹œ์˜ค - ๊ด€๋ จ ๋ฌธ์ œ: #968, #877. FAQ์—์„œ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • [ ] ์ฝ”์Šค๋ผ FAQ
  • [ ] ๊ณ ๊ธ‰ data.table ์‚ฌ์šฉ:

    • [ ] NSE

    • [ ] ...

  • [ ] ํƒ€์ด๋ฐ ๋น„๋„คํŠธ(#520์„ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ๊ณณ์—์„œ ๊ฐ€์ ธ์˜ค์ง€๋งŒ ๋ฒค์น˜๋งˆํฌ/ํƒ€์ด๋ฐ์ด ํฌํ•จ๋œ Wiki๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋น„๋„คํŠธ๋กœ ํ•„์š”ํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).
  • [ ] fread+fwrite ๋น„๋„คํŠธ, fread ์œ„ํ‚ค https://github.com/Rdatatable/data.table/issues/2855

์™„์„ฑ ๋œ:

  • [x] [data.table ์†Œ๊ฐœ](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-intro-vignette.html) - data.table ๊ตฌ๋ฌธ, ์ผ๋ฐ˜ ํ˜•์‹, i ํ•˜์œ„ ์ง‘ํ•ฉ ํ–‰ j ๋ฐ ์‚ฌ์šฉํ•˜์—ฌ ์ง‘๊ณ„ by .
  • [x] [์ฐธ์กฐ ์‹œ๋งจํ‹ฑ](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reference-semantics.html) (์ฐธ์กฐ๋กœ ์—ด์„ _add/update/delete_ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. i ๋ฐ by ๋กœ ์ด์ „๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ)
  • [x] [data.tables๋ฅผ ์‚ฌ์šฉํ•œ ํšจ์œจ์ ์ธ ์žฌ๊ตฌ์„ฑ](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reshape.html)
  • [x] ๋น„๋„คํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ by=.EACHI SO ์—์„œ

๋ฏธ์„ฑ๋…„์ž:

  • [ ] integer64 ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  _ํฐ ์ •์ˆ˜_์— ๋Œ€ํ•ด ์Šน๊ฒฉํ•˜๋Š” ์ž‘์—….

์ฐธ๊ณ  ์‚ฌํ•ญ(ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜„์žฌ ๋น„๋„คํŠธ ์—…๋ฐ์ดํŠธ): ๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

data.table ์†Œ๊ฐœ:

  • [x] order in i .
  • [x] ์„ ํƒ/๊ณ„์‚ฐํ•˜๋Š” ๋™์•ˆ j ์—ด ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • [x] ์›๋ž˜ data.table์ด ์•„๋‹ˆ๋ผ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์€ _after_ _keyby_๊ฐ€ ์ ์šฉ๋œ๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.
  • [x] .SDcols ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ ๋ฐ with=FALSE ์—ด์„ colA:colB ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ์กฐ ์˜๋ฏธ:

  • [ ] ๋‹ค๋ฅธ ๋ชจ๋“  ๊ด€๋ จ set* ํ•จ์ˆ˜๋„ ์—ฌ๊ธฐ์— ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค. ( setnames , setcolorder ๋“ฑ..)

  • [ ] ์ฃผ๋กœ set .
  • [x] 1b) the := operator ๋Š” ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค - ๊ฑฐ๊ธฐ ์˜ˆ์ œ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค - ์ด ์ฃผ์„ ๋‹ค์Œ์— .

    ํ‚ค ๋ฐ ๋น ๋ฅธ ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ•˜์œ„ ์ง‘ํ•ฉ:

  • [ ] ์ •์ˆ˜/์ด์ค‘ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ์˜ˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • [ ] ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ•˜์œ„ ์ง‘ํ•ฉ์—์„œ "๋…ธ๋งค์น˜" ๊ธฐ๋ณธ๊ฐ’์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.
  • [ ] NA๋ฅผ ์ด์ง„ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ•˜์œ„ ์ง‘ํ•ฉ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

    FAQ(์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

  • [x] ์˜ˆ๋ฅผ ๋“ค์–ด readRDS() ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์—์„œ R ๊ฐœ์ฒด๋ฅผ ์ฝ์„ ๋•Œ ์™ธ๋ถ€ ํฌ์ธํ„ฐ๊ฐ€ NULL์ธ ๋ฌธ์ œ์— ๋Œ€ํ•œ FAQ ์—…๋ฐ์ดํŠธ ์ด SO ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธ

  • [ ] alloc.col() ์‚ฌ์šฉํ•˜์—ฌ data.table ์„ ๊ณผ๋„ํ•˜๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ธฐ(์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—ด์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ) ๋ฐ ๊ทธ ์ด์œ ๋ฅผ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด SO ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธ
documentation internals

๋ชจ๋“  54 ๋Œ“๊ธ€

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 ์‚ฌ์šฉ. ํŒจํ‚ค์ง€๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠธ๋ฆญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์œผ๋ฉด ๋งํฌ๋ฅผ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, "์œ ์šฉํ•œ" ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ฒŒ์‹œ๋ฌผ์„ ๋‚˜์—ดํ•˜๋Š” ๋น„๋„คํŠธ๋Š” ๋น„๋„คํŠธ์— ํฌํ•จํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ์ฃผ์ œ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ์ € ์—‰๋šฑํ•œ ์ƒ๊ฐ๋“ค.

๋‘ ๊ฐ€์ง€ ์ƒ๊ฐ:

  • ์œ„ํ‚ค์˜ ๋น„๋„คํŠธ ๋งํฌ
  • ์ฐธ์กฐ ์‹œ๋งจํ‹ฑ ๋น„๋„คํŠธ์—์„œ :=๋ฅผ ์ธ์šฉ๋œ ๋ชฉ๋ก ํ‘œํ˜„์‹(๋˜๋Š” ๋‹จ์ง€ ์ธ์šฉ๋œ ํ• ๋‹น)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. data.table์˜ NSE(๋น„ํ‘œ์ค€ ํ‰๊ฐ€)๋Š” ๋Œ€ํ™”์‹ ์‚ฌ์šฉ์„ ์‰ฝ๊ฒŒ ํ•˜์ง€๋งŒ ์ž์‹ ์˜ ํ•จ์ˆ˜๋‚˜ ํŒจํ‚ค์ง€์—์„œ data.table์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด์ œ quote, eval, ๋Œ€์ฒด ๋ฐ ์นœ๊ตฌ์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ž์ฒด ๋น„๋„คํŠธ๋ฅผ ๋ฐ›์„ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. dt[, do.call(":=", eval(my_quoted_list)]์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋น„๋„คํŠธ์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ NSE ๋ฐ ๊ทธ ์˜๋ฏธ์— ๋Œ€ํ•œ ๋น„๋„คํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”.

  1. ์ด๊ฑฐ ๋ดค์–ด?
  2. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ ๋ณ„๋„์˜ ๋น„๋„คํŠธ์—์„œ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

@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 ํ›Œ๋ฅญํ•œ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  1. reshape2 ๋Š” data.table v1.9.6 ๋ถ€ํ„ฐ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„๋„คํŠธ์—์„œ๋„ ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด ์ฃผ์ œ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ œ๋ชฉ ๋ฐ ๊ธฐํƒ€ ์œ„์น˜์— '์™€์ด๋“œ์—์„œ ๋กฑ' ๋ฐ '๋กฑ์—์„œ ์™€์ด๋“œ'๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. 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 ์ฝ”๋“œ์— ์•ฝ๊ฐ„ ๊ฒ์„ ๋จน๊ณ  ์žˆ๋‹ค. ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„' -- ๋‚ด๋ถ€์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋Š” ๋†€๋ผ์šด ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์กฐ์ธ ๋น„๋„คํŠธ์˜ ๊ฒฝ์šฐ:

https://github.com/Rdatatable/data.table/issues/2396

๋น„๋„คํŠธ์— ๋Œ€ํ•œ ๊ธฐ์—ฌ๊ฐ€ (๋‚˜์™€ ๊ฐ™์€) ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๊ธฐ์—ฌ์ž๋กœ๋ถ€ํ„ฐ ์ˆ˜๋ฝ๋˜๋Š”์ง€ ๋ฌผ์–ด๋ณด๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ดˆ๊ธฐ์— ์ƒ๋‹นํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  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์„ ๊ฒŒ์‹œํ–ˆ์Œ์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰