当前位置: 首页 > 知识库问答 >
问题:

滚动连接R中的Data.Table

蒋华美
2023-03-14

我试图更多地理解滚动加入的工作方式,并有一些困惑,我希望有人能为我澄清这一点。举一个具体的例子:

dt1 <- data.table(id=rep(1:5, 10), t=1:50, val1=1:50, key="id,t")
dt2 <- data.table(id=rep(1:5, 2), t=1:10, val2=1:10, key="id,t")

我希望这会生成一个长的data.table,其中滚动dt2中的值:

dt1[dt2,roll=TRUE]
dt2[dt1,roll=TRUE]

另外,文档中说:

X[Y] is a join, looking up X's rows using Y (or Y's key if it has one) 
as an index.

这使得看起来只有X中的东西应该返回,而正在执行的联接是内部联接,而不是外部联接。如果roll=t,但是DT1中不存在特定的ID呢?再玩一点,我不明白列中有什么值。

共有1个答案

林浩漫
2023-03-14

文档中的引用似乎来自FAQ1.12X[Y]和merge(X,Y)之间的区别是什么。您在?data.table中找到以下内容了吗?

roll适用于最后一个联接列,通常是一个日期,但可以是任何有序变量,不规则的,包括间隙。如果ROLL=TRUE并且i的行与除最后一个x join列以外的所有行匹配,并且它在最后一个i join列中的值落在一个空隙中(包括在该组的最后一次x观察之后),那么x中的主要值将向前滚转。使用修改后的二分搜索,此操作特别快。该操作也称为最后观察结转(LOCF)。通常,X的键中不应该有重复项,最后一个键列是一个日期(或time或datetime),并且X的键的所有列都连接到。一个常见的习惯用法是跨一组标识符选择一个同期规则时间序列:DT[CJ(ids,dts),ROLL=true],其中DT有一个2列键(id,date),而CJ代表交叉联接。

rolltoLast类似于roll,但是数据不会向前滚过连接列定义的每个组中的最后一个观察。对于由除最后一个联接列以外的所有列定义的组,i的值必须落在x的空隙中,但不能落在数据结束之后。roll和rolltolast可能不都是真的。

就SQL连接的左/右类比而言,我更愿意在FAQ 2.14的上下文中考虑一下,您能进一步解释为什么data.table受到base中[B]语法的启发吗?这是一个相当长的答案,所以我不粘贴在这里。

 类似资料:
  • 我正在尝试连接到R中的hive。我已经在我的R环境中加载了RJDBC和rJava库。我使用的是一台Linux服务器,hadoop(hortonworks sandbox 2.1)和R(3.1.1)安装在同一个盒子中。这是我用来连接的脚本: 我得到了这个错误: 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。l

  • 由于java的版本,我无法在R中启动h2o并收到以下错误 H2O还没有开始跑步,现在开始... 注意:如果出现错误,请查看以下日志文件:C:\Users\Vaibhav\AppData\Local\Temp\RtmpMBUt0r\file1db069d01678/h2o_Vaibhav _started_from_r。输出C:\Users\Vaibhav\AppData\Local\Temp\Rt

  • 尝试在csv格式的shapefile和数据表之间进行空间连接时,我遇到了一些问题。 重要提示:包含大约500条记录,而表只有250条。中的某些记录将不匹配。 问题1: 我有一个excel文件,我将其转换为csv以导入到R中。在运行连接时,我注意到ID列中的一些数据格式发生了更改(因此将变为到相同)。然而,当我在记事本中打开csv文件时,格式是正确的。我试着将表格作为.txt文件读取,但没有成功。有

  • 我有两个结构相同的data.table。两个键列后跟许多数据列。数据列的数量可能会有所不同。我想将第二data.table的值添加到第一data.table.的相应行/列中 到目前为止,我的最佳选择如下: 请注意,nrow 和 ncol 以及 loc 和产品条目都是可变的,具体取决于源数据。 如果 DT2 中的每一行都与 DT1 中的一行匹配,则此方法有效,否则会产生意外的结果。有没有一种更严格/

  • 输出 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。lang.NoClassDefFoundError:org/apache/thrift/transport/ttTransportException

  • 我是Spring的新手。我正面临Spring-Boot的问题。我正在尝试将外部配置文件中的字段自动装配到自动装配的bean中。我有以下类 应用程序。Java语言 AppConfig。Java语言 服务接口 服务1 我无法在App类的postconstruct方法中显示服务名称变量。我这样做对吗?