Фильтр dplyr с условием - PullRequest
       117

Фильтр dplyr с условием

2 голосов
/ 19 июня 2020

У меня есть этот df

ID CODE
A  45676
B  87898
B  89998
A  45688
A  45556

Я хотел бы получить этот df

ID CODE    CODE_SUB
A  45676   76
B  87898   NA
B  89998   NA
A  45688   88
A  45556   56

CODE_SUB - последние два символа из CODE с идентификатором условия == A

Я использовал этот код

mutate(CODE_SUB = substr(which (df$ID == "A"), CODE , start= 4, stop= 5))

Но

Ошибка: Проблема с mutate() вводом CODE_SUB. x неиспользованный аргумент (КОД)

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Одно base R решение может быть:

with(df, (ID == "A")^NA * as.numeric(substr(CODE, nchar(CODE)-1, nchar(CODE))))

[1] 76 NA NA 88 56
1 голос
/ 19 июня 2020

Вы можете использовать функцию ifelse внутри mutate

df %>% mutate(CODE_SUB = as.numeric(ifelse(ID == "A", substr(CODE, start = 4, stop = 5), NA)))

Output

#   ID  CODE CODE_SUB
# 1  A 45676       76
# 2  B 87898       NA
# 3  B 89998       NA
# 4  A 45688       88
# 5  A 45556       56
...