【问题标题】:"Partial" matching IDs in two dataframes and merging in R两个数据帧中的“部分”匹配 ID 并在 R 中合并
【发布时间】:2020-10-21 13:52:46
【问题描述】:

我一直在处理的一些数据被重新识别了好几次。 为了有效地处理它们,我需要根据它们的ids 合并df1df2。 我尝试了几种基于separate()grep()fuzzy_join() 的方法,但由于df2id2 包含比df1 更长的ID,我无法处理这个问题。

下面是df1df2的代表;

View(df1)

      id1   value1
    N12800  19562
    N11901  403
    N14688  100
    N12886B 32
    T00014  14
    T16487  13


View(df2)

          id2                            value2
N11959_N11901                              56
T03938_N16439_T05162_T05141_N14997         654
N12800                                     1234
N12886B_N12886A                            75
N14688                                     14
T18332_T16487_T13537_T11268_T09399         61

您能否为这个“部分”ID 匹配问题提出解决方案

【问题讨论】:

    标签: r string-matching partial


    【解决方案1】:

    如果您尝试过separate(),那么您已经熟悉tidyr。延长df2 是否为您提供了执行连接所需的条件?

    unnest(
      mutate(
        test,
        id2 = strsplit(id2, split = "_")
      ),
      id2
    )
    

    【讨论】:

    • 您好,感谢您的建议,但不幸的是,在这种情况下它没有帮助。因为 df2 实际上太宽了(dim 250x57213),所以我打算在 df1 &df2 之间找到通用名称,并有序地替换 df2 上的 id 名称。我知道这两个数据中的所有 id 都可用,但在 df2 中以一种混乱的方式。
    • df2 <- mutate(df2, index = row_number()); df3 <- select(df2, index, id2) %>% mutate(id2 = strsplit(id2, split = "_")) %>% tidyr::unnest(id2) 通过id2 将df1 连接到df3,然后通过index 将结果对象连接到df2
    • 非常感谢!我不能简单地想到这种方法来解决我的问题。你让我很开心!
    猜你喜欢
    • 2020-10-15
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多