gpt4 book ai didi

r - 通过参数连接 data.table

转载 作者:行者123 更新时间:2023-12-03 22:47:57 26 4
gpt4 key购买 nike

我有两个数据表 dxdy

dx <- data.table(a = c(1,1,1,1,2,2), b = 3:8)
dy <- data.table(a = c(1,1,2), c = 7:9)

我要加入 dydx 的每一行,下面是所需的输出
data.table(plyr::ddply(dx, c("a", "b"), function(d) merge(d, dy, by = "a")))
a b c
1: 1 3 7
2: 1 3 8
3: 1 4 7
4: 1 4 8
5: 1 5 7
6: 1 5 8
7: 1 6 7
8: 1 6 8
9: 2 7 9
10: 2 8 9

但是,我无法仅使用 [] 中的操作进行输出的 data.tablemerge ?我累了
merge(dx, dy, by = "a", all = TRUE)

vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, :
连接结果为 10 行;超过 9 = nrow(x)+nrow(i)。检查 i 中的重复键值,每个键值都一遍又一遍地加入 x 中的同一组。如果没问题,请尝试 by=.EACHI 为每个组运行 j 以避免大量分配。如果您确定要继续,请使用 allow.cartesian=TRUE 重新运行。否则,请在 FAQ、Wiki、Stack Overflow 和 datatable-help 中搜索此错误消息以获取建议。

dy[dx,on="a"]

vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, :
连接结果为 10 行;超过 9 = nrow(x)+nrow(i)。检查 i 中的重复键值,每个键值都一遍又一遍地加入 x 中的同一组。如果没问题,请尝试 by=.EACHI 为每个组运行 j 以避免大量分配。如果您确定要继续,请使用 allow.cartesian=TRUE 重新运行。否则,请在 FAQ、Wiki、Stack Overflow 和 datatable-help 中搜索此错误消息以获取建议。

dx[, merge(dy, by = "a"), by = c("a", "b")]

is.data.table(y) 中的错误:缺少参数“y”,没有默认值
dx[, merge(.SD, dy, by = "a"), by = c("a", "b")]

merge.data.table(.SD, dy, by = "a") 中的错误:
by中列出的元素必须是 x 和 y 中的有效列名


我怎么能做到呢?

谢谢!

最佳答案

由于多个1,错误来了。在默认合并中,即 data.frames 的实现,allow.cartesian=TRUE默认情况下。但在 data.table 实现中,情况并非如此。因此,如果您运行以下代码,它将为您提供合并输出。

merge(dx, dy, by = "a", all = TRUE, allow.cartesian=TRUE)

上面的代码会给你你想要的输出。

关于r - 通过参数连接 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349613/

26 4 0