У меня есть такой фрейм данных
ID <- c("A","A","A","A","A","A","A","A","A")
TOOL <- c("ABC_01","ABC_04","ABC_02",
"DEF_01","DEF_05","DEF_02",
"IJK_04","IJK_01","IJK_02")
ITEM <- c("RFALT.2SHEET.S13","RFTACU_789.L_PM.2_N13","CS20_789VIS.200_L_PM.STD",
"ACRF55_16_T37\\AT_PM3\\1 N1","RFALT\\2SHEET\\S13","RFNF_1_2U\\L_PM3\\5 N13",
"RFALT 2SHEET S13","CS20_STD 2DUB_L SP C9","RFNC_DBS_T2000 L_EDGE 1 N13")
df <- data.frame(ID,TOOL,ITEM,stringsAsFactors = F)
Я пытаюсь использовать несколько разделителей на основе столбца TOOL
s
- Если TOOL LIKE 'ABC', то извлечьстрока в
ITEM
до .
(. является разделителем) - Если TOOL LIKE 'DEF', то извлечь строку в
ITEM
до \
(\ является разделителем) - Если TOOL LIKE 'IJK', то извлечь строку в
ITEM
до
(пробел - разделитель)
Желаемый вывод
ID TOOL ITEM
A ABC_01 RFALT
A ABC_04 RFTACU_789
A ABC_02 CS20_789VIS
A DEF_01 ACRF55_16_T37
A DEF_05 RFALT
A DEF_02 RFNF_1_2U
A IJK_04 RFALT
A IJK_01 CS20_STD
A IJK_02 RFNC_DBS_T2000
Я пытаюсь сделать это таким образом, используя dplyr
& stringr
пакеты
library(dplyr)
library(stringr)
df2 <- df %>%
filter(grepl("ABC",TOOL)) %>%
mutate(ITEM = str_extract(ITEM, "^.*(?=.\\)")) %>%
filter(grepl("DEF",TOOL)) %>%
mutate(ITEM = str_extract(ITEM, "^.*(?=.\.)"))
Это не работает.Может ли кто-нибудь указать мне правильное направление?