如何在sparklyr中按3分钟时间戳聚合数据?

2024-02-04

我在用sparklyr进行一些快速分析。我在使用时间戳时确实遇到一些问题。我有两个不同的数据帧:一个以 1 分钟间隔行,另一个以 3 分钟间隔行。

第一个数据集:(1 分钟间隔)

id  timefrom    timeto  value
10  "2017-06-06 10:30:00"   "2017-06-06 10:31:00"   50
10  "2017-06-06 10:31:00"   "2017-06-06 10:32:00"   80
10  "2017-06-06 10:32:00"   "2017-06-06 10:33:00"   20
22  "2017-06-06 10:33:00"   "2017-06-06 10:34:00"   30
22  "2017-06-06 10:34:00"   "2017-06-06 10:35:00"   50
22  "2017-06-06 10:35:00"   "2017-06-06 10:36:00"   50

第二个数据集:(3 分钟间隔)

id  timefrom    timeto  value
10  "2017-06-06 10:30:00"   "2017-06-06 10:33:00"   30
22  "2017-06-06 10:33:00"   "2017-06-06 10:36:00"   67
32  "2017-06-06 10:36:00"   "2017-06-06 10:39:00"   28
14  "2017-06-06 10:39:00"   "2017-06-06 10:42:00"   30
27  "2017-06-06 10:42:00"   "2017-06-06 10:55:00"   90

为了比较这两个数据集的值,我必须将第一个数据集聚合 3 分钟并计算平均值value。此外,我必须从第二个数据集中找到最适合的窗口。

The result应该看起来像这样:

id  timefrom    timeto  value1  value2
10  "2017-06-06 10:30:00"   "2017-06-06 10:33:00"   30  50
22  "2017-06-06 10:33:00"   "2017-06-06 10:36:00"   67  43.3

仅通过sparklyr 是否可以实现这一目标?我感谢您的帮助!


假设您的数据已经解析:

df1
# # Source:   table<df1> [?? x 4]
# # Database: spark_connection
#      id timefrom            timeto              value
#   <int> <dttm>              <dttm>              <int>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:31:00    50
# 2    10 2017-06-06 08:31:00 2017-06-06 08:32:00    80
# 3    10 2017-06-06 08:32:00 2017-06-06 08:33:00    20
# 4    22 2017-06-06 08:33:00 2017-06-06 08:34:00    30
# 5    22 2017-06-06 08:34:00 2017-06-06 08:35:00    50
# 6    22 2017-06-06 08:35:00 2017-06-06 08:36:00    50

df2
# # Source:   table<df2> [?? x 4]
# # Database: spark_connection
#      id timefrom            timeto              value
#   <int> <dttm>              <dttm>              <int>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:33:00    30
# 2    22 2017-06-06 08:33:00 2017-06-06 08:36:00    67
# 3    32 2017-06-06 08:36:00 2017-06-06 08:39:00    28
# 4    14 2017-06-06 08:39:00 2017-06-06 08:42:00    30
# 5    27 2017-06-06 08:42:00 2017-06-06 08:55:00    90

您可以使用window功能 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions%24@window(timeColumn:org.apache.spark.sql.Column,windowDuration:String,slideDuration:String,startTime:String):org.apache.spark.sql.Column:

exprs <- list(
  "id", "value as value2",
  # window generates structure struct<start: timestamp, end: timestamp>
  # we use dot syntax to access nested fields
  "window.start as timefrom", "window.end as timeto")

df1_agg <- df1 %>% 
  mutate(window = window(timefrom, "3 minutes")) %>% 
  group_by(id, window) %>% 
  summarise(value = avg(value)) %>%
  # As far as I am aware there is no sparklyr syntax 
  # for accessing struct fields, so we'll use simple SQL expression
  spark_dataframe() %>% 
  invoke("selectExpr", exprs) %>% 
  sdf_register() %>%
  print()

# Source:   table<sparklyr_tmp_472ee8ba244> [?? x 4]
# Database: spark_connection
     id value2 timefrom            timeto             
  <int>  <dbl> <dttm>              <dttm>             
1    22   43.3 2017-06-06 08:33:00 2017-06-06 08:36:00
2    10   50.0 2017-06-06 08:30:00 2017-06-06 08:33:00

然后你就可以通过id和时间戳列:

df2 %>% inner_join(df1_agg, by = c("id", "timefrom", "timeto"))
# # Source:   lazy query [?? x 5]
# # Database: spark_connection
#      id timefrom            timeto              value value2
#   <int> <dttm>              <dttm>              <int>  <dbl>
# 1    10 2017-06-06 08:30:00 2017-06-06 08:33:00    30   50.0
# 2    22 2017-06-06 08:33:00 2017-06-06 08:36:00    67   43.3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在sparklyr中按3分钟时间戳聚合数据? 的相关文章

  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • 无法编译包“maps”

    当我安装 maps 包时 安装中出现警告 ld warning ignoring file Library Developer CommandLineTools SDKs MacOSX10 14 sdk usr lib libSystem
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • Apache Spark 两个 RDD 之间的差异

    假设我有这个示例作业 在带有 Java API 的 Groovy 中 def set1 def set2 0 upto 10 set1 lt lt it 8 upto 20 set2 lt lt it def rdd1 context pa
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 如何在不使用 .toPandas() hack 的情况下提取 PySpark 中对长度敏感的特征?

    我是 PySpark 的新手 我想翻译特征提取 FE 将 pythonic 部分脚本放入 PySpark 中 首先 我有所谓的 Spark 数据框sdf包括 2 列 A 和 B 下面是示例 data A B https example1 o
  • 如何将数据帧转换为 JSON 并使用密钥写入 kafka 主题

    我正在尝试以 JSON 格式向 kafka 写入一个数据帧 并在 Scala 中向该数据帧添加一个键 我目前正在使用 kafka spark 中的这个示例 df selectExpr CAST key AS STRING CAST valu
  • R:根据列名部分匹配计算行平均值

    我有一个看起来像这样的表 er er 1 as as 1 as 2 rt op a 1 6 90 8 6 4 87 b 1 8 56 7 5 5 9 c 8 7 6 4 5 9 6 d 1 0 8 6 4 3 6 e 9 7 2 4 3 8
  • ggplot geom_bar - 条形太宽

    对于这个非信息性的标题 我感到很抱歉 gt y read csv textConnection scan sep n what raw org art type length 191 gk Finish short 4 147 ik Att
  • 使用 dplyr 对连续变量进行分类[重复]

    这个问题在这里已经有答案了 我想基于连续数据创建一个具有 3 个任意类别的新变量 set seed 123 df lt data frame a rnorm 100 使用基地我会 df category df a lt 0 5 lt low
  • 函数速度测试的奇怪结果

    我编写了一个使用递归来查找最大公因数 分母 的函数 gt gcd function a b if length a length b gt 1 warning Only scalars allowed using first element
  • 使用spark-sql从oracle加载数据时如何增加默认精度和小数位数

    尝试从 oracle 表加载数据 其中我有几列保存浮点值 有时它最多保存 DecimalType 40 20 即点后 20 位数字 目前 当我使用加载其列时 var local ora df DataFrameReader ora df l
  • 使用括号表示 y 轴上的负值 ggplot2

    我想在括号中显示 y 轴负值 而不是用负号 例如 我想显示 2 000 而不是 2 000 我在 R 中使用 ggplot2 我尝试在scale y continuous内部使用 negative parens TRUE 如下所示 但没有成

随机推荐

  • 多级视图:expandablelistview

    我正在尝试编写多级树 我确实看过expandablelistview 但它只支持两个级别 我确实查看了其他问题 SO 和帖子 我发现的最有希望的帖子是http mylifewithandroid blogspot com 2011 02 3
  • Py2Exe,[Errno 2]没有这样的文件或目录:'numpy-atlas.dll'

    我在我的程序中包含了 matplotlib 我在谷歌上搜索了 numpy atlas dll 我似乎是地球上唯一遇到这个问题的人 setup py from setuptools import setup import py2exe set
  • 二维中两个向量的平分线(可能共线)

    一般如何找到两个向量的二等分 b bx by 我们考虑两个非零向量 u ux uy v vx vy 可能是共线的 对于非共线向量我们可以写 bx ux u vx v by uy u vy v 但对于共线向量 bx by 0 Example
  • WPF TreeView SelectedItemChanged 未触发

    我正在尝试创建一个 TreeView 它允许用户重命名 TreeView 中的节点 该树表示 HL7 消息 并按从段到子组件的层次结构进行构建 例如 PID PID 1 PID 2 etc 我需要允许用户选择一个节点 按 F2 将节点置于编
  • getMethod("summary",signature = "FitDiff") 中的错误

    我正在使用比较 lavaan 对象semTools compareFit 它抛出一条非常奇怪的错误消息 我还尝试了以下可重现的示例 data HolzingerSwineford1939 package lavaan HS modelA l
  • 使用 jQuery 检测首页加载?

    我需要检测 jQuery 中页面的首次加载 以便仅在用户第一次导航到该页面时加载页面时才能执行某些操作 类似于服务器端代码页 ispostbasck 我已经测试了 document ready 每次页面加载时它都会触发 因此这不会提供我需要
  • JOOQ Oracle 数字精度和 Java 数字映射

    谁能告诉我或提供关于 oracle 数字精度和 java 类型之间映射的参考 即数字 x 在什么时候映射到短整型 整型 长型 BigInteger 等 Java 整数类型与 Oracle 并不完美匹配NUMBER类型 本质上 有两种方法可以
  • 为什么选择 Phing/Ant 而不是 Bash 和 Make? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在工作中使用 Phing 它是我到达那里时设置的 并考虑将它用于一些个人项目 我还没有弄清楚的一件事是最大的吸引力是什么 Phing 或
  • Swift - Google 地图更新当前位置的路线

    我目前正在学习 Swift 的 Google Maps API 因此我有几个问题希望你们能回答 碰巧我正在尝试创建一个简单地为用户提供方向的应用程序 就像苹果地图和谷歌地图一样 它只是为用户绘制一条方向路线 我已经成功地完成了这项工作 但我
  • 布尔运算符的差异:& 与 && 和 |与||

    我知道规则 and 但什么是 and 请用例子向我解释这些 这些是按位 AND 和按位 OR 运算符 int a 6 110 int b 4 100 Bitwise AND int c a b 110 100 100 Bitwise OR
  • 提取 pandas 数据框中的嵌套 JSON

    我正在尝试在以下 pandas 数据框中解压嵌套的 JSON id info 0 0 u a u good u b u type1 u a u bad u b u type2 1 1 u a u bad u b u type1 u a u
  • 访问集合中的唯一元素[重复]

    这个问题在这里已经有答案了 我有一个set在Python中 我根据条件一一删除元素 当集合只剩下 1 个元素时 我需要返回该元素 如何从集合中访问该元素 一个简化的例子 S set range 5 for i in range 4 S S
  • CAP定理是否意味着ACID对于分布式数据库是不可能的?

    有NoSQL ACID 分布式 数据库 https stackoverflow com questions 2608103 is there any nosql that is acid compliant 尽管有 CAP 定理 这怎么可能
  • 警告:库类 android.net.http.AndroidHttpClient 扩展或实现程序类 org.apache.http.client.HttpClient

    我在导出 Android 应用程序时从 proguard 收到这些奇怪的错误 我已经编辑了配置文件 但我找不到剩下的错误是什么 我已经添加了外部 Jars 配置了 dontwarn 现在我找不到剩下的问题 2013 11 22 17 13
  • 房间持久性:实体和 Pojo 必须有一个可用的公共构造函数

    我正在尝试通过 Room Persistence 库向我的 Android 应用程序添加数据库 但收到此错误 错误 实体和 Pojo 必须有一个可用的公共构造函数 您可以有一个空构造函数 也可以有一个参数与字段匹配 按名称和类型 的构造函数
  • 方向更改时保留软输入/IME 状态

    我的应用程序中遇到了一个小的用户体验问题 当软键盘打开时从横向更改为纵向 或纵向更改为横向 时 键盘会隐藏 我想要做的是停止键盘在方向改变时隐藏 Edit 我不想强制打开键盘 如果键盘在方向更改之前被隐藏 我希望它保持隐藏状态 我想reta
  • 将一个文件夹中的所有文件移动到另一个文件夹中?

    当我将一个文件从一个位置移动到另一个位置时 rename path filename newpath filename 如何将一个文件夹中的所有文件移动到另一个文件夹中 尝试了这个没有结果 rename path newpath 一个稍微冗
  • 如何从 JavaScript 调用 REST API

    我有一个提供 json 数据的网址 我想从 javascript 访问该 URL 但收到此错误 纯文本文档的字符编码未声明 如果文档包含 US ASCII 范围之外的字符 则在某些浏览器配置中 该文档将呈现为乱码 文件的字符编码需要在传输协
  • 如果满足条件,则将元素与列表中的下一个元素连接

    我正在使用斯坦福自然语言处理将文本分割成句子 但它忽略了收缩 这是我得到的句子的一个例子 List I d like to fix this sentence because it s broken 我的目标是连接缩写词 使结果如下所示 L
  • 如何在sparklyr中按3分钟时间戳聚合数据?

    我在用sparklyr进行一些快速分析 我在使用时间戳时确实遇到一些问题 我有两个不同的数据帧 一个以 1 分钟间隔行 另一个以 3 分钟间隔行 第一个数据集 1 分钟间隔 id timefrom timeto value 10 2017