Sparklyr:在两列上分隔行
我正在使用Sparkyr进行一个项目。我有一个Spark数据框,其中一些列中有列表,我想将它们分成多行,即每行有一个值,就像Sparklyr:在两列上分隔行,r,bigdata,sparklyr,R,Bigdata,Sparklyr,我正在使用Sparkyr进行一个项目。我有一个Spark数据框,其中一些列中有列表,我想将它们分成多行,即每行有一个值,就像dplyr中的separate_rows一样 所以基本上我的数据框是这样的 | x | y 1| [a,b] | [c,d] 我希望最后能有这样的东西: | x | y 1| a | c 2| b | d 正如本文所建议的,explode是一个良好的开端,但它一次只能完成一列的工作;如果我使用它两次,我将在这里得到4行,而不
dplyr
中的separate_rows
一样
所以基本上我的数据框是这样的
| x | y
1| [a,b] | [c,d]
我希望最后能有这样的东西:
| x | y
1| a | c
2| b | d
正如本文所建议的,explode
是一个良好的开端,但它一次只能完成一列的工作;如果我使用它两次,我将在这里得到4行,而不是我想要的2行。在这个非常简单的例子中,我可以设法只保留我想要的行,但是如果列表中有两个以上的元素,事情会变得有点混乱
我想做的是:
x
和y
合并为一个列,其中包含[[a,c],[b,d]
explode
进行[a,c]
,然后使用[b,d]
collect
和dput
获得的可复制示例:
structure(list(ref_amount = list(list(967.66, 1592.56), list(
967.66, 1592.56)), ref_theta = list(list(5.26977034898459,
5.16119062369122), list(5.26977034898459, 5.16119062369122))), .Names = c("ref_amount",
"ref_theta"), row.names = c(NA, -2L), class = c("tbl_df", "tbl",
"data.frame"))
每个“数组”中是否总是有两个元素?这些是数组或结构(根据收集的结果,这是不可能的)。不,不总是2,这使它变得复杂。这些列实际上是
摘要
+收集列表
的结果;当我在Spark数据框上使用scape
时,它会显示
。为什么要收集列表并在之后爆炸?能提供更多的背景吗?这里可能有更好的解决方案。