r - 如何取消嵌套数据并从 SparkR 中的数组中获取第一个元素?
问题描述
我是 SparkR 的新手,正在尝试数据准备的第一步。数据集就是这种东西。我试图对重要的列进行子集化和选择。我的问题是如何从数组元素中选择一列。我正在尝试这样的事情,它允许我通过取消嵌套数据来选择列,但不能取消嵌套和展平数组以获得它的第一个元素。有用的链接
select.col <- SparkR::select(data,c("parsed.nid","parsed.status","parsed.sections.element[0].name"))
解决方案
我自己找到了解决此问题的方法。这可以通过两个简单的步骤完成:-
- 首先,我们需要在 SparkR 中使用 explode(),从该列中获取列表中的所有内容。
- 接下来,我们需要在 SparkR 中使用 windowPartitionBy() 来创建一个分区,然后我们可以根据我们的要求得到任何我们想要的东西,比如 row_number()、dense_rank()、rank() 等。就像这里我们想要的第一个元素列表,所以我使用了 row_number 函数。
片段:
data.select <- SparkR::select(data,c("parsed.nid","parsed.status","parsed.sections"))
names(data.select) <- c("nid","status","sections")
categories <- SparkR::select(data.select,data.select$nid,data.select$status,explode(data.select$sections))
ws <- SparkR::orderBy(SparkR::windowPartitionBy("nid","status","sections"),"nid")
data.final <- SparkR::mutate(categories,row_num = over(row_number(), ws))
##If we want to get the first element of the array.
data.final <- data.final[data.final$row_num==1,]
也请添加您的建议。
推荐阅读
- c# - C# 任务取消
- mysql - MySQL中的表发生任何更改后如何执行操作?
- python - 如何从终端中的 PID 接收实时日志?
- docker - 如何在 Ubuntu OS 中更新 docker 最新版本
- javascript - JS 中是否有类似 Python 中的 int.to_bytes() 这样的函数?
- css - CSS - 通过(下方)SVG 徽标图像添加细水平线
- python - 将可执行文件或依赖项与您的 python 程序捆绑在一起
- css - 如何使用 grid 属性操作多个 div 容器?
- javascript - React-Native secureTextEntry 在上面的 TextInput 和 TextInput 中创建输入滞后
- c# - EF Core Postgres 列表
.包含实体属性