0

我在下面提到了数据框:

df <- read.table(text =
"code        Num        mail           identifier      U_id
YY-12       12345      jjf@gmail.com  ar145j          U-111
YY-13       12345      jjf@gmail.com  Ra145J          U-111
YY-14       48654      ert@gmail.com  at188R          U-112
YY-15       48654      Ert@gmail.com  At819R          U-113
YY-16       88994      fty@ymail.com  fr789U          U-114
YY-17       88994      fty@ymail.com  Rf789X          U-115
YY-18       14500      foi@ymail.com  xr747Y          U-116
YY-19       14500      foi@ymail.com  xY747C          U-117", header = T)

利用上面提到的数据框,我想获得那些行的子集,对于相同的Nummail,我们有不同的标识符,连续的 2 位数差异。

例如,在下面提到的输出中,标识符ar145j更改为Ra145J.

所需输出:

code        Num        mail           identifier      U_id
YY-12       12345      jjf@gmail.com  ar145j          U-111
YY-13       12345      jjf@gmail.com  Ra145J          U-111
YY-14       48654      ert@gmail.com  at188R          U-112
YY-15       48654      Ert@gmail.com  At819R          U-113
4

1 回答 1

0

可能这会有所帮助

library(tidyverse)
library(stringi)
df %>%
  group_by(Num, mail) %>%
  filter(n() == 1 | toupper(first(substr(identifier, 1, 2))) == 
           stri_reverse(toupper(last(substr(identifier, 1, 2)))))
# A tibble: 6 x 5
# Groups:   Num, mail [4]
#  code    Num mail          identifier U_id 
#  <fct> <int> <fct>         <fct>      <fct>
#1 YY-12 12345 jjf@gmail.com ar145j     U-111
#2 YY-13 12345 jjf@gmail.com Ra145J     U-111
#3 YY-14 48654 ert@gmail.com at188R     U-112
#4 YY-15 48654 Ert@gmail.com At819R     U-113
#5 YY-16 88994 fty@ymail.com fr789U     U-114
#6 YY-17 88994 fty@ymail.com Rf789X     U-115
于 2018-07-23T17:11:54.517 回答