Найти строку и создать дополнительный столбец - PullRequest
1 голос
/ 05 июля 2019

У меня есть список данных, который содержит множество строк, содержащих коды валют. Расположение кода варьируется в пределах строки, и я ищу способ отделить код.

Я пробовал искать, но все предложения, которые я могу найти, располагаются по центру строки, находящейся в том же месте или разделенной похожим символом (например, _ или -)

Мой ввод выглядит примерно так:

input = structure(list(V1 = c("asdf23.USD123", "DKK1234", "1dCNY_d", 
"fgdUSD33", "912#NZD")), class = "data.frame", row.names = c(NA, 
-5L))

и у меня есть список валют, которые я ищу вот так:

fx = c("CNY", "DKK", "NZD", "USD")

Я пытаюсь найти в столбце V1 значения, соответствующие списку, и создать новый столбец с соответствующей валютой, например:

output = structure(list(V1 = c("asdf23.USD123", "DKK1234", "1dCNY_d", 
"fgdUSD33", "912#NZD"), V2 = c("USD", "DKK", "CNY", "USD", "NZD"
)), class = "data.frame", row.names = c(NA, -5L))

Я не знаю, где бы я начал искать. Кто-нибудь может подсказать, что я должен искать?

1 Ответ

3 голосов
/ 05 июля 2019

Можно было бы извлечь подстроку на основе значения 'fx' путем paste вставки элементов в одну строку

library(dplyr)
library(stringr)
input %>% 
   mutate(V2 = str_extract(V1, str_c(fx, collapse="|")))
#             V1  V2
#1 asdf23.USD123 USD
#2       DKK1234 DKK
#3       1dCNY_d CNY
#4      fgdUSD33 USD
#5       912#NZD NZD

Или в base R

input$V2 <- regmatches(input$V1, regexpr(paste(fx, collapse="|"), input$V1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...