簡體   English   中英

是否有 str_detect 版本來查找重復項?

[英]Is there a version of str_detect to find duplicates?

我有一個包含多個包含標識符的列的數據集,我需要根據標識符識別重復項。 我創建了一個將所有標識符列粘貼在一起的新列,但我不確定如何實際檢測重復項。

當前數據集如下所示:

id <- (1:10)
record <- c("A | B", "A", "--C--", "B", "CD", "D", "ABCD", "B | D | A", "C", "data:D")
df <- data.frame(id, record)
   id      record
   1        A | B
   2            A
   3        --C--
   4            B
   5           CD
   6            D
   7         ABCD
   8    B | D | A
   9            C
 10        data:D

我想根據 A、B、C 和 D 查找重復的行。例如,它應該告訴我 5、6、7、8 和 10 具有匹配項,因為它們都包含 D。

我更喜歡tidyverse解決方案,並且一直在玩stringrdplyr但沒有運氣。 我不想搜索特定模式,而是查找包含彼此相同字符串的所有行。

id <- (1:10)
record <- c("A | B", "A", "--C--", "B", "CD", "D", "ABCD", "B | D | A", "C", "data:D")
df <- data.frame(id, record)

df$index <- stringr::str_extract_all(df$record, "[A-Z]")

library(dplyr)
library(tidyr)

res = unnest(df) %>% tidyr::spread(index,-id)

> res
# A tibble: 10 x 6
      id record    A     B     C     D    
   <int> <fct>     <chr> <chr> <chr> <chr>
 1     1 A | B     A     B     NA    NA   
 2     2 A         A     NA    NA    NA   
 3     3 --C--     NA    NA    C     NA   
 4     4 B         NA    B     NA    NA   
 5     5 CD        NA    NA    C     D    
 6     6 D         NA    NA    NA    D    
 7     7 ABCD      A     B     C     D    
 8     8 B | D | A A     B     NA    D    
 9     9 C         NA    NA    C     NA   
10    10 data:D    NA    NA    NA    D    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM