我有两个共享所有列的数据集,我想基于除其中两列之外的所有列进行反连接。
\n例如,我想做如下的事情:
\nlibrary(dplyr)\ndf1 <- tibble(x = c("A", "B", "C"), y = c("X", "Y", "Z"), z = c(1, 2, 3),\n a = c(4, 5, 6))\n\ndf2 <- tibble(x = c("A", "D", "E"), y = c("X", "W", "R"), z = c(1, 5, 6),\n a = c(4, 7, 8))\n\ndf2 %>% anti_join(df1, join_by(-c(z, a)))\n#> Error in `join_by()`:\n#> ! Expressions must use one of: `==`, `>=`, `>`, `<=`, `<`, `closest()`,\n#> `between()`, `overlaps()`, or `within()`.\n#> \xe2\x84\xb9 Expression 1 is `-c(z, a)`.\n\n#> Backtrace:\n#> \xe2\x96\x86\n#> 1. \xe2\x94\x9c\xe2\x94\x80df2 …Run Code Online (Sandbox Code Playgroud) 我有一个名为的数据集,df其中有年、月和日变量。我想使用该write_dataset函数输出具有标准箭头数据集语法的文件夹,如下图所示:
每个文件夹内将有month=1、month=2,依此类推。
现在,为了创建它,我使用了以下代码:
df <- df %>% group_by(year, month, day)
output_folder = "my/path"
arrow::write_dataset(df,
output_folder,
format = "parquet",
)
Run Code Online (Sandbox Code Playgroud)
但是,我的数据集太大,我想利用data.table快速分组的优势。我做同样的事情的方法如下:
grouping_cols = c("year", "month", "day")
setkeyv(df, grouping_cols)
arrow::write_dataset(df,
output_folder,
format = "parquet",
)
Run Code Online (Sandbox Code Playgroud)
但是,现在结果未分组,并且返回单个 .parquet 文件(未充分利用 的潜力arrow::write_dataset)。
有没有办法让相同的数据集按指定列进行分组,但基于而data.table不是dplyr分组?