μλ νμΈμ. λμΌν μ΄μμ μ§κ³ λ° κ·Έλ£Ήν ν λ data.tableμ λμμ νΌλμ€λ¬μν©λλ€. κ·Έλ£Ήνλμ§ μμ λ°μ΄ν°κ° μλ κ·Έλ£Ήν λ λ°μ΄ν°μ λν΄ μ§κ³ (μ : ν©κ³)λ₯Ό μννλ κ² κ°μ΅λλ€. λλ μ΄κ²μ΄ λ°λμ νλ Έλ€κ³ λ§νλ κ²μ μλμ§λ§ λ€λ₯Έ λꡬμ λ€λ₯΄λ©° μ€λͺ μ΄ λ¬΄μμΈμ§ λλ λ΄κ° λκ° μλͺ»νκ³ μλμ§ (λλ μ΄κ²μ΄ λ²κ·Έ μΌ κ°λ₯μ±μ΄ μλμ§) κΆκΈν©λλ€. κΈ°λνλ κ²λ³΄λ€ λ λ§μ΄ μννλ dplyr (κ·Έλ¦¬κ³ SQLκ³Ό λ λΉμ· ν¨)μ λν λΉκ΅λ₯Ό ν¬ν¨νμ΅λλ€. NB : μμ²νλλ‘ λ¬Έμ , μ€ν μ€λ²νλ‘ λ±μ κ²μν΄ λ³΄μμ§λ§μ΄ μλ리μ€μ νΉμ± (λμΌν μ΄ κ·Έλ£Ήν λ° μ§κ³)μ μ½κ° λ νΉνκ³ μΌμΉνλ νλͺ©μ μ°Ύμ§ λͺ»νμ΅λλ€.
#
Minimal reproducible example
μλ λ μμ ν©κ³ μ΄μ λΉκ΅νμμμ€. μλ₯Ό λ€μ΄ κ°μ΄ 3 μΈ νμ΄ 3 κ° μμΌλ―λ‘ ν©κ³κ° 3μ΄ μλ 9κ° λ κ²μΌλ‘ μμν©λλ€.
data.table
library(data.table)
df <- data.frame(SomeNumber=c(1,2,3,1,2,3,1,2,3))
dt <- data.table(df)
r <- dt[, .(.N, Total=sum(SomeNumber)), by=SomeNumber]
κ²°κ³Ό (r) :
SomeNumber N Total
1: 1 3 1
2: 2 3 2
3: 3 3 3
dplyr
library(dplyr)
df <- data.frame(SomeNumber=c(1,2,3,1,2,3,1,2,3))
r <- df %>% group_by(SomeNumber) %>%
summarise(N=n(), Total=sum(SomeNumber)) %>%
ungroup()
κ²°κ³Ό (r) :
SomeNumber N Total
1: 1 3 3
2: 2 3 6
3: 3 3 9
#
Output of sessionInfo()
R λ²μ 3.5.1 (2018-07-02)
νλ«νΌ : x86_64-w64-mingw32 / x64 (64 λΉνΈ)
μλμμ μ€ν : Windows> = 8 x64 (λΉλ 9200)
맀νΈλ¦μ€ μ ν : κΈ°λ³Έκ°
μ₯μ:
[1] LC_COLLATE = μμ΄ _ μκ΅ .1252 LC_CTYPE = μμ΄ _ μκ΅ .1252 LC_MONETARY = μμ΄ _ μκ΅ .1252
[4] LC_NUMERIC = C LC_TIME = μμ΄ _ μκ΅ .1252
μ²¨λΆ λ κΈ°λ³Έ ν¨ν€μ§ :
[1] ν΅κ³ κ·Έλν½ grDevices utils λ°μ΄ν° μ
λ©μλλ² μ΄μ€
κΈ°ν μ²¨λΆ λ ν¨ν€μ§ :
[1] dplyr_0.7.6 data.table_1.11.8 openxlsx_4.1.0 bindrcpp_0.2.2 pivottabler_0.4.0.9000
λ€μ μ€νμ΄μ€λ₯Ό ν΅ν΄λ‘λ (μ°κ²°λμ§ μμ) :
[1] Rcpp_0.12.19 rstudioapi_0.8 bindr_0.1.1 magrittr_1.5 tidyselect_0.2.4 R6_2.3.0 rlang_0.2.2 fansi_0.3.0 tools_3.5.1
[10] utf8_1.1.4 cli_1.0.1 htmltools_0.3.6 yaml_2.2.0 assertthat_0.2.0 digest_0.6.17 tibble_1.4.2 crayon_1.3.4 zip_1.0.0
[19] purrr_0.2.5 htmlwidgets_1.3 glue_1.3.0 compiler_3.5.1 κΈ°λ₯ _1.3.0 jsonlite_1.5 pkgconfig_2.0.2
λ€λ₯Έ λꡬμ λ€λ₯΄λ©° μ€λͺ μ΄ λ¬΄μμΈμ§ λλ λ΄κ° λκ° μλͺ»νκ³ μλμ§ (λλ μ΄κ²μ΄ λ²κ·Έ μΌ κ°λ₯μ±μ΄ μλμ§) κΆκΈν©λλ€. κΈ°λνλ κ²λ³΄λ€ λ λ§μ΄ μννλ dplyr (κ·Έλ¦¬κ³ SQLκ³Ό λ λΉμ· ν¨)μ λν λΉκ΅λ₯Ό ν¬ν¨νμ΅λλ€.
j
of DT[, j, by]
μμ by
μ μ΄μ κΈΈμ΄κ° 1μ
λλ€.νμ§λ§ .N*SomeNumber
μ κ°μ΄ κ³μ°ν μ μμ΅λλ€.
dt[, .(.N, Total=.N*SomeNumber), by=SomeNumber]
# or, for efficiency with GForce...
dt[, .(.N), by=SomeNumber][, Total := N*SomeNumber][]
κ·Όκ±°λ "κ° κ·Έλ£Ή λ΄μμ κ·Έλ£Ή λ³μμ κΈΈμ΄κ° 1 μΈ μ΄μ λ 무μμ
λκΉ?"λΌλ μ§λ¬Έμ μ°Έμ‘°νμμμ€. vignette("datatable-faq")
λλ https://github.com/Rdatatable/data.table/wiki/Getting-started μ FAQ λ΄λΆ
FAQμ λν λ΅λ³κ³Ό ν¬μΈν°μ λν΄ @ franknarf1 λ° @jangorecki μκ² κ°μ¬λ립λλ€.
FAQ λ΅λ³μ μ½κ³ λ λ§μ ν
μ€νΈλ₯Ό μν ν νμλ κ·Έλ£Ήνμ μ¬μ© λ νλͺ©μ λ°λΌ λμΌν λ°μ΄ν°κ°μλ λ€λ₯Έ μ΄μ μ§κ³νλ©΄ λ€λ₯Έ κ²°κ³Όκ° λμ¬ μ μμΌλ―λ‘ κ·Έλ£Ήν λ³μλ₯Ό μ¬μ©νλ λ°©λ²μ 맀μ°μ£Όμν΄μΌ ν κ² κ°μ΅λλ€. λλ μ¬μ ν μ΄κ²μ΄ μ΄μνκ³ μ½κ° μ΄μνλ€κ³ μκ°νμ§λ§ μλ§λ μ΄κ²μ λ΄κ° μ΅μν΄ μ ΈμΌ ν κ²μ
λλ€.
μ :
library(data.table)
df <- data.frame(SomeNumberA=c(1,1,1),SomeNumberB=c(1,1,1))
dt <- data.table(df)
r <- dt[, .(.N, TotalA=sum(SomeNumberA)), by=SomeNumberA]
μμ κ²°κ³Ό : TotalA = 1
library(data.table)
df <- data.frame(SomeNumberA=c(1,1,1),SomeNumberB=c(1,1,1))
dt <- data.table(df)
r <- dt[, .(.N, TotalB=sum(SomeNumberB)), by=SomeNumberA]
μμ κ²°κ³Ό : TotalB = 3
library(data.table)
df <- data.frame(SomeNumberA=c(1,1,1),SomeNumberB=c(1,1,1))
dt <- data.table(df)
r <- dt[, .(.N, TotalA=sum(SomeNumberA), TotalB=sum(SomeNumberB)), by=SomeNumberA]
κ²°κ³Ό μμ, μ€λ₯μ ν¨κ» μ€ν μ€ν¨ :
gsum (SomeNumberA) μ€λ₯ : 'SomeNumberA'κ°μ²΄λ₯Ό μ°Ύμ μ μμ΅λλ€.
λ§μ§λ§μ λ²κ·Έμ λλ€ ...
μ΄κ²μ΄ data.tableμ κ·Έλ£Ήν / μ§κ³ λ°©λ²μ λμμ€μΈμ§ νμ€νμ§ μμ§λ§ λ¨μΌ λ³μ data.tableλ‘ κ·Έλ£Ήν λ° μ§κ³ ν λ κ·Έλ£Ήν νΈμΆμ 'μΈμ ν'νμ§ μμ΅λλ€.
μ¦, μ§κ³ ν κ° μ«μλ₯Ό μ체 κ·Έλ£ΉμΌλ‘ κ³μ°νλ―λ‘ κ·νμ κ²½μ°μλ μλ 9κ° μλ 3 κ°μ SomeNumber
λ³μ λ§ λ¨κ²λ©λλ€.
λΉ λ₯΄κ³ μ¬μ΄ μμ μ μ΄κΈ° κ·Έλ£Ήν νΈμΆ λ΄μμ μΈμ λΆν΄κ° λ°μνλλ‘νλ κ²μ λλ€.
library(data.table)
df <- data.frame(SomeNumber=c(1, 2, 3, 1, 2, 3, 1, 2, 3))
dt <- data.table(df)
r <- dt[, .(.N, Total = sum(SomeNumber)), by = as.factor(SomeNumber)]
as.factor N Total
1: 1 3 3
2: 2 3 6
3: 3 3 9
κ°μ₯ μ μ©ν λκΈ
FAQμ λν λ΅λ³κ³Ό ν¬μΈν°μ λν΄ @ franknarf1 λ° @jangorecki μκ² κ°μ¬λ립λλ€.
FAQ λ΅λ³μ μ½κ³ λ λ§μ ν μ€νΈλ₯Ό μν ν νμλ κ·Έλ£Ήνμ μ¬μ© λ νλͺ©μ λ°λΌ λμΌν λ°μ΄ν°κ°μλ λ€λ₯Έ μ΄μ μ§κ³νλ©΄ λ€λ₯Έ κ²°κ³Όκ° λμ¬ μ μμΌλ―λ‘ κ·Έλ£Ήν λ³μλ₯Ό μ¬μ©νλ λ°©λ²μ 맀μ°μ£Όμν΄μΌ ν κ² κ°μ΅λλ€. λλ μ¬μ ν μ΄κ²μ΄ μ΄μνκ³ μ½κ° μ΄μνλ€κ³ μκ°νμ§λ§ μλ§λ μ΄κ²μ λ΄κ° μ΅μν΄ μ ΈμΌ ν κ²μ λλ€.
μ :
μμ κ²°κ³Ό : TotalA = 1
μμ κ²°κ³Ό : TotalB = 3
κ²°κ³Ό μμ, μ€λ₯μ ν¨κ» μ€ν μ€ν¨ :
gsum (SomeNumberA) μ€λ₯ : 'SomeNumberA'κ°μ²΄λ₯Ό μ°Ύμ μ μμ΅λλ€.