R 中没有重复的 Left_Join

2024-01-25

我想做一种vlookup。正如您所知,Excel vlookup 函数从数据中获取第一个值。另一方面,left_join 函数的工作原理类似。但是,当第一个数据在查找值上不唯一时,left_join 函数会重复 de 值。我想对 Excel 进行同样的思考,而不使第一个数据集变得唯一。我不想操纵任何数据。只是想获得第一眼的价值。

例如。在本例中,我们看到标题 A 在 Data3 中重复,并且 StartYear 看起来与 EvaYear 相同:(

我想在 StartDate 和 EndDate 之间找到 EvaYear。如果 EvaYear 等于 EndDate 和下一周期的 StartDate。我想坐第一排。这就是为什么我必须在公式中同时使用 >= 和

Title <- c("A","A","A","B","B")
StartYear <- c(2000,2005,2008,2010,2012)
EndYear <- c(2005,2008,2010,2012,2015)
Score <- c(100,75,80,95,79)
Data1 <- data.frame(Title,StartYear,EndYear,Score)

Title <- c("A","B")
EvaYear <- c(2008,2015)
Data2 <- data.frame(Title,EvaYear)

setDT(Data2)
Data3 <- setDT(Data1)[Data2,.(Title,StartYear,EndYear,EvaYear,Score),on=.(Title,StartYear<=EvaYear,EndYear>=EvaYear)]

运行查询后我得到:

  Title   StartYear   EndYear   EvaYear  Score
     A        2008        2008      2008    75
     A        2008        2008      2008    80
     B        2015        2015      2015    79

但我需要得到:

Title   StartYear   EndYear   EvaYear  Score
 A        2005        2008      2008    75
 B        2012        2015      2015    79

有几件事需要解决。 (1) 您在实际输出中没有看到 2012,这是通过连接中第一个帧来解决的。 (2) 删除近似重复项。

第一个是因为在不等式连接中,它使列与other框架。尝试交换它们。

Data3 <- Data2[Data1, .(Title, StartYear, EndYear, EvaYear, Score), on = .(Title, EvaYear >= StartYear, EvaYear <= EndYear)]
Data3
#    Title StartYear EndYear EvaYear Score
# 1:     A      2000    2005    2000   100
# 2:     A      2005    2008    2005    75
# 3:     A      2008    2010    2008    80
# 4:     B      2010    2012    2010    95
# 5:     B      2012    2015    2012    79

正如你所看到的,通过,EvaYear已更改,匹配StartYear它匹配。让我们尝试解决这个问题:

Data3 <- Data2[, EY := EvaYear][Data1, .(Title, StartYear, EndYear, EvaYear, Score), on = .(Title, EY >= StartYear, EY <= EndYear)
  ][ !is.na(EvaYear), 
    ][ order(Score),
      ][, .SD[1,], by = .(Title, EvaYear)]
Data3
#    Title EvaYear StartYear EndYear Score
# 1:     A    2008      2005    2008    75
# 2:     B    2015      2012    2015    79
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中没有重复的 Left_Join 的相关文章

随机推荐

  • Netbeans 中的 hibernate 逆向工程找不到 SQL Server 表

    我的机器上安装了测试 SQL Server 数据库 创建了一个测试 SQL Server 帐户 并使用该帐户在 TestDb 中的默认架构上创建了两个表 在我的 Java Web 应用程序 简单的 JSP 上 我使用 Hibernate 并
  • 何时需要将应用程序源包含在测试目标中?

    在一个新项目中我有这个简单的测试 import
  • 将选择的更改提交到另一个分支,然后恢复当前分支的工作?

    这种情况经常发生在我的工作流程中 我正在一个单独的分支中开发一个功能 在执行此操作时 我会遇到需要修复但来自框架或站点布局较高层的小问题 我想切换回主界面develop从那里选择文件分支并提交更改 然后返回到feature分支 然后变基 以
  • 宽字符输出结果[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 为什么使用 wchar t 时得到数
  • 从 Java 调用 Python

    我想打电话给python来自 Java 的脚本 我的python版本是2 5 Java版本是6 我当前的代码 try Process p Runtime getRuntime exec path dirs file py p waitFor
  • 尝试使用 C# 代码将数据输入到访问文件时出现无效的 Sql 语句错误[重复]

    这个问题在这里已经有答案了 我的错误是 System Data OleDb OleDbException 无效的 SQL 语句 应为 DELETE INSERT PROCEDURE SELECT 或 UPDATE 这是我的代码 我检查以确保
  • 在 Eclipse 中隐藏状态栏或进度栏

    如何隐藏 Eclipse 中的状态栏 我指的是底部的那个 其中还显示 进度 状态 它非常分散注意力 因为它一直在做某事 我看了一下这个问题 https stackoverflow com questions 5645495 how to h
  • 使用 Mockito 的 ArgumentCaptor 类来匹配子类

    下面的代码显示了我的问题 实际上 我尝试使用 Mockito 的 ArgumentCaptor 来验证某个具体类是否调用过一次方法 如果可能的话 我想在这里使用 ArgumentCaptor 但我开始怀疑我需要使用自定义 ArgumentM
  • 本机窗口queueBuffer函数不渲染来自Stagefright解码器的输出

    我将 SurfaceView 表面从 Java 传递到 JNI 在 JNI 中我从该表面获取本机窗口 Stagefright从 mp4 文件中解码 h264 帧 在解码过程中我调用ANativeWindow queueBuffer 为了发送
  • Rails 4:如何使用includes() 和where() 来检索关联对象

    我不知道如何使用 where 方法来检索关联的模型数据 在此示例中 项目属于用户 class Project lt ActiveRecord Base belongs to user has many videos end class Us
  • 为什么 GCC 的 -Wconversion 对于 char 和 unsigned char 的行为不同?

    Consider U8 foo U8 x U8 y return x y 如果 x 和 y 的类型 U8 是 char 或 unsigned char GCC 的 Wconversion 的行为会有所不同 gcc Wconversion c
  • 循环绘制子图

    z A 0 3618426 0 36146951 B 1 8908799 1 904695 C 2 1813462e 08 2 1833622e 08 D 0 89925492 0 89953589 E 2 6356747 2 631791
  • 如何使用 Excel VBA 单击网页上的链接?

    我正在编写 VBA 代码来从用户那里获取股票代码 导航到网站 输入股票代码并单击相应的链接 我研究了这个StackOverflow 问题和回复 https stackoverflow com questions 21002756 how t
  • Java:HashSet 与 HashMap

    我有一个程序正在处理巨大的数据集 对象最好存储在散列实现的容器中 因为程序不断在容器中寻找对象 第一个想法是使用HashMap 因为这个容器的get和remove方法更适合我需要的用途 但是 我发现 HashMap 的使用非常消耗内存 这是
  • 在运行时更改.dll

    我有一个巨大的应用程序 我的解决方案的一个项目在其中生成报告 我想添加新报告 更新报告 而不构建我的项目 只需添加 dll文件 我读到Assembly and AppDomain 但我不知道为新报告添加新的 dll 以及如何在运行时更新旧报
  • 我的图像处理项目的研究领域是什么?

    在我的最后一年项目中 我正在做一个车辆细节修改系统 系统应该能够完成以下任务 我使用的是从固定距离 例如 5m 拍摄的车辆尺寸图像 并存储不同的颜色和边缘图像我是我的应用程序 这是基本思想 检测车辆的轮胎和合金轮辋 检测并测量已安装轮辋的轮
  • Selenium - 如何获取窗口中打开的选项卡数量?

    我的测试用例 打开浏览器并访问 URL 单击主页上的链接 gt 这将打开一个新窗口 新选项卡 返回主页 单击另一个链接 确保步骤 2 中先前打开的子窗口 子选项卡上显示新内容 我可以通过获取窗口句柄的计数来检查打开的窗口数量 并断言它等于
  • Java中如何模拟文件IO?

    我怎样才能创建一个类MockFile模仿java io Filew r t 文件读写 我到处都用我自己的方法而不是new FileInputStream and new FileOutputStream 所以这部分没有问题 我总是委托给适当
  • 获取参数的调用变量名

    关于这个问题从调用方法中获取参数名称 https stackoverflow com questions 15205457 get the name of parameters from a calling method and 在 C 中
  • R 中没有重复的 Left_Join

    我想做一种vlookup 正如您所知 Excel vlookup 函数从数据中获取第一个值 另一方面 left join 函数的工作原理类似 但是 当第一个数据在查找值上不唯一时 left join 函数会重复 de 值 我想对 Excel