Data.table: FR: CJ () рдХреЛ рдирд╛рдо рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬреИрд╕реЗ data.table() рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдорд╛рд░реНрдЪ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Rdatatable/data.table

рдореИрдВ рдЕрдХреНрд╕рд░ рдХрд░рддрд╛ рд╣реВрдБ

DT[CJ(colA = colA, colB = colB, unique=TRUE), on=c("colA","colB")]
# to complete missing levels

# or 
DT[, CJ(colA = colA, colB = colB, unique=TRUE)][!DT, on=c("colA","colB")]
# to identify missing levels
# http://stackoverflow.com/a/36065607/1191259

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ colA рдФрд░ colB рдХрдо рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХреВрдВред рдПрдлрдЖрд░ рдпрд╣рд╛рдБ рдХреЗ рд▓рд┐рдП рд╣реИ

CJ(colA, colB, unique=TRUE, names=TRUE) 

colA рдФрд░ colB рдирд╛рдореЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж data.frame() рдФрд░ data.table() ( make.names ?) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред

(рдирд╛рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ on=.Icols рдПрдХ рдЪреАрдЬ рдереА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ FR рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред)

рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SO рдкреЛрд╕реНрдЯ ...

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

+1 рдФрд░ рдореБрдЭреЗ names рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА - рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред setkey рдмрдЬрд╛рдп "рдЪрд╛рд▓реВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реНрдЯрд┐рдХрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрди рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ unique = TRUE рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛ - рдореИрдВ _ever_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ CJ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CJ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ ... CJ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП AFAIK рд╣рдореЗрдВ рдЗрд╕реЗ CJ(x, ...) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ # 1090

+1 рдФрд░ рдореБрдЭреЗ names рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреА - рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред setkey рдмрдЬрд╛рдп "рдЪрд╛рд▓реВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реНрдЯрд┐рдХрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдмрди рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ unique = TRUE рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛ - рдореИрдВ _ever_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ CJ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@jangorecki рдореИрдВрдиреЗ рдЕрднреА рддрдХ #1090/#814 рд╕рд╛рдорд╛рди рдХреЛ рдирд╣реАрдВ рдЫреБрдЖ рд╣реИред рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕