首页 > 解决方案 > 如何根据 1 行中 1 列中的值将 ID 分配给多行,复制 R 中不同行中不同列中的值?

问题描述

当向紧急线路拨打电话时,会获得一个 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 新手。

PS这是我想要结束的一个例子:

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 

标签: rduplicatestidyversedata-cleaning

解决方案


如何从两列创建唯一 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 

推荐阅读