微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

非对等连接不保留原始列值

如何解决非对等连接不保留原始列值

我在运行非对等连接(来自 R 的 data.table 库)时发现了一个奇怪的行为,我不知道为什么会发生这种情况。

为什么在运行非对等连接时,如果我想保留左表的原始值,我需要在{{}里面写 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 而不是只写x.colname 1}} 连接的属性

这是我所说的一个可重现的小例子:

colname

这是 j 的快照(在 library(tidyverse) library(data.table) # Setting seed for reproducibility set.seed(666) # data.table that contains roadway segments. # The "frm_dfo" and "to_dfo" columns represent the start and end mileposts # of each roadway segment. For example,the segment with road_ID=101 refers # to the portion of IH20 that starts at milepost 10 and ends at milepost 20. roads = data.table(road_id=101:109,hwy=c('IH20','IH20','SH150','TX66','TX66'),frm_dfo=c(10,20,30,10,30),to_dfo=c(20,40,40),seg_name=c('Seg 1','Seg 2','Seg 3','Seg 10','Seg 20','Seg 30','Seg 100','Seg 200','Seg 300')) # data.table that contains crashes. # The "dfo" column represents the milepost of the roadway on which the # crash occurs. For example,the crash with crash_id=1 happens on milepost 33.23105 of IH20. crashes = data.table(crash_id=1:30,hwy=rep(c('IH20','BOB11'),each=10),dfo=runif(min=10,max=40,n=30)) # Non-equi join that finds which segment each crash happens on. joined_data_v1 = crashes %>% .[roads,j = list(crash_id,hwy,x.dfo,seg_name,frm_dfo,to_dfo),on = list(hwy=hwy,dfo >= frm_dfo,dfo <= to_dfo)] %>% arrange(crash_id,by_group = TRUE) # Again,joining crashes and roadway segments. # Here,though,note that I've swapped x.dfo for just dfo inside the `j` argument joined_data_v2 = crashes %>% .[roads,dfo,by_group = TRUE) 参数中使用 joined_data_v1):

joined_data_v1

这是 x.dfo 的快照(在 j 参数中使用 joined_data_v2):

joined_data_v2

请注意,在 dfo 中,名为 j 的列如何包含 joined_data_v1 数据表中 x.dfo 列的确切值。但是,在 dfo 中,名为 crashes 的列包含来自 joined_data_v2 data.table 的 dfo 列的值(而不是来自 {{1} } data.table 的 frm_dfo 列)。

这里发生了什么?为什么这行为如此奇怪?为什么结果 data.table 的 roads 列中包含的值并不总是准确反映 crashes data.table 中原始 dfo 列中包含的内容

我尝试查看非 equi 连接的一些文档,但在这里找不到任何可以帮助我的内容

Here一个相关的问题,但他们没有提到为什么会发生这种行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。