【问题标题】:How to assign ID to multiple rows based on a value in 1 column in 1 row duplicating a value in a DIFFERENT column in a different row in R?如何根据 1 行中 1 列中的值将 ID 分配给多行,复制 R 中不同行中不同列中的值?
【发布时间】:2019-05-15 04:27:22
【问题描述】:

当向紧急线路拨打电话时,会获得一个 CallNo(事件的唯一性);但是,有时会发出多个呼叫,并且不同的接听者不小心为他们分配了不同的电话号码。稍后,另一个呼叫的 CallNo (DupCallNo) 被附加到每个呼叫。

我有两列,CallNo 和 DupCallNo,以及许多其他变量:

CallNo  DupCallNo   Priority       Unit   
   123        255          A    Bravo12    
   255        123          A    Bravo44
   366        476          B     Xray22
   476        366          A    Xray109
   512        366          A    Xray116

如何将唯一 ID 分配给前两行,另一个分配给后两行?

我发现了几个关于基于同一列中的值创建唯一 ID 的问题和答案,但基于具有不同列的两个不同行的值。在这种情况下,如果第 1 行中的 A 列等于行中的 B 列,如何为第 1 行和第 2 行分配唯一 ID?

非常感谢,来自 R 新手。

附:以下是我想要最终得到的示例:

CallNo  DupCallNo   Priority       Unit   UNIQUE_ID
   123        255          A    Bravo12       call1
   255        123          A    Bravo44       call1
   366        476          B     Xray22       call2
   476        366          A    Xray109       call2
   512        366          A    Xray116       call2 

【问题讨论】:

  • 我很困惑,你只想合并第 1 行和第 2 行吗?你能举一个你想要的输出的例子吗?
  • 是否有第三个调用可以匹配 2 个已建立的重复项之一?
  • 我添加了一个我想要的输出示例 - 请参阅 UNIQUE_ID 列。我还添加了另一行以进一步显示复杂数据——有三个电话号码,其中两个是主电话 366 的副本。所以,扎克,是的。谢谢你们的帮助!

标签: r duplicates tidyverse data-cleaning


【解决方案1】:

如何从两列创建唯一 ID:

library(tidyverse)

df %>% rowwise() %>%  
  mutate(Combined = paste0(min(CallNo, DupCallNo, na.rm = TRUE), max(CallNo,DupCallNo, na.rm = TRUE))) 

# A tibble: 4 x 5
# Groups:   Combined [2]
  CallNo DupCallNo Priority Unit    Combined
   <int>     <int> <fct>    <fct>   <chr>   
1    123       255 A        Bravo12 123255  
2    255       123 A        Bravo44 123255  
3    366       476 B        Xray22  366476  
4    476       366 A        Xray109 366476 

【讨论】:

  • 这是开始思考这个问题的好方法 - 按最小值和最大值组织并组合。我只是编辑 OG 问题以表明它有点复杂,因为可能有两个呼叫具有唯一的 Call Numbers,在其 DupCallNo 列中有一个第三个呼叫。但是我可以开始考虑使用您的思维方法的两步,也许使用正则表达式来组合至少以相同索书号开头的行。谢谢!
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
相关资源
最近更新 更多