【问题标题】:Merge files of different lengths in r based on two variables (one match and one comparison)基于两个变量(一个匹配一个比较)在r中合并不同长度的文件
【发布时间】:2016-11-24 07:19:46
【问题描述】:

我有两个要合并的文件。第一个文件有几个变量;两个重要的是 ID 和 END。 ID 不是一行唯一的;多行可以有相同的ID。第二个文件有两个变量,ID 和 START。在此文件中,每个 id 都是唯一的——没有具有相同 id 的行。

我想创建第三个文件。我想保留第一个文件中具有与第二个文件中的一个 ID 匹配的 ID 并且第一个文件中的 END 小于第二个文件中的 START 的行。我只想保留第一个文件中符合条件的行。我不想保留第二个文件中的 START 值。我也不想保留与 ID 不匹配且没有 END

FILE 1  
ID    END       
1     333            
2     555           
3     789           
4     234



File 2
ID     START
 1       432
 2       777  
 3       444


New FILE
ID    END
1     333
2     555

感谢任何帮助。

【问题讨论】:

  • 我认为您的示例中有错误,第 2 行中的 start 大于第 2 行中的 end。我几乎完成了代码,我应该有一个答案
  • 在 ID 列上合并,然后过滤。阅读合并here

标签: r file merge


【解决方案1】:

假设 file3 是您想要的最后一个:

file3 = merge(file1, file2, by = "ID")
file3 = file3[file3$END < file3$START, c("ID","END")]

【讨论】:

    【解决方案2】:

    假设您有 df1 用于 file1 和 df2 用于 file2 并且您想将 df3 用于您的最后一个输出。

    rows <- df1$Id %in% df2$ID
    df3 <- df1[rows]
    df3 <- df1[df1$End > df2$End]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2022-11-02
      • 2017-10-25
      相关资源
      最近更新 更多