如何在 R 中的两个 H2OFrame 之间进行交叉连接?
How to do cross join between two H2OFrame in R?
我想在两个H2OFrames 之间进行交叉连接。寻找解决方法严格在 H2OFrame
col1.1 <- c('A', 'B', 'E', 'C', 'F', 'D')
dummy <- rep(1,6)
d1.hex <- as.h2o( cbind( col1.1, dummy ) )
col2.1 <- c('xx', 'yy', 'zz', 'ww')
dummy <- rep(1,4)
d2.hex <- as.h2o( cbind( col2.1, dummy ) )
如果我使用 all =TRUE
它会抛出错误:未实现
h2o.merge(d1.hex, d2.hex, all = TRUE)
如果我使用默认,连接结果不是交叉连接
h2o.merge(d1.hex, d2.hex )
dummy col1.1 col2.1
1 A xx
1 B xx
1 E xx
1 C xx
1 F xx
1 D xx
我尝试将连接列的数据类型更改为分类或数字但没有成功。寻求您的帮助以解决问题。
谢谢
令人沮丧的答案是你不能,并且已经有两个错误报告:
https://0xdata.atlassian.net/browse/PUBDEV-4516
https://0xdata.atlassian.net/browse/PUBDEV-3699
最简单的解决方法是下载所有数据,并在 R 客户端中执行。但是对于大数据,这可能是不可能的。如果你必须在 H2O 集群中这样做,你将需要一个循环:
- 将 d1.hex 中具有第一个唯一值的行复制到
tmp
tmp2 = h2o.merge(tmp, d2.hex, all.y = TRUE)
对 d1.hex 中的每个唯一值重复上述操作。然后,最后,对所有 tmp2
表执行 h2o.rbind()
。
或者,经典的开源方案:自己实现未实现的代码(或者beg/payh2o.ai自己实现)。
我想在两个H2OFrames 之间进行交叉连接。寻找解决方法严格在 H2OFrame
col1.1 <- c('A', 'B', 'E', 'C', 'F', 'D')
dummy <- rep(1,6)
d1.hex <- as.h2o( cbind( col1.1, dummy ) )
col2.1 <- c('xx', 'yy', 'zz', 'ww')
dummy <- rep(1,4)
d2.hex <- as.h2o( cbind( col2.1, dummy ) )
如果我使用 all =TRUE
它会抛出错误:未实现
h2o.merge(d1.hex, d2.hex, all = TRUE)
如果我使用默认,连接结果不是交叉连接
h2o.merge(d1.hex, d2.hex )
dummy col1.1 col2.1
1 A xx
1 B xx
1 E xx
1 C xx
1 F xx
1 D xx
我尝试将连接列的数据类型更改为分类或数字但没有成功。寻求您的帮助以解决问题。
谢谢
令人沮丧的答案是你不能,并且已经有两个错误报告:
https://0xdata.atlassian.net/browse/PUBDEV-4516
https://0xdata.atlassian.net/browse/PUBDEV-3699
最简单的解决方法是下载所有数据,并在 R 客户端中执行。但是对于大数据,这可能是不可能的。如果你必须在 H2O 集群中这样做,你将需要一个循环:
- 将 d1.hex 中具有第一个唯一值的行复制到
tmp
tmp2 = h2o.merge(tmp, d2.hex, all.y = TRUE)
对 d1.hex 中的每个唯一值重复上述操作。然后,最后,对所有 tmp2
表执行 h2o.rbind()
。
或者,经典的开源方案:自己实现未实现的代码(或者beg/payh2o.ai自己实现)。