Использование условия, связанного с частью слова в r

У меня есть такой фрейм данных:

1                      2 
aquiles_alcatra_Mat_15 picanha
aquiles_alcatra_Mat_15 picanha
alcatra_Mat_15         picanha
alcatra_Mat_20         picanha
alcatra_Mat_25         picanha
picanha_Mat_20         picanha
picanha_Mat_25         picanha

и я хотел бы сделать это:

1                      2 
aquiles_alcatra_Mat_15 alcatra
aquiles_alcatra_Mat_15 alcatra
alcatra_Mat_15         alcatra
alcatra_Mat_20         alcatra
alcatra_Mat_25         alcatra
picanha_Mat_20         picanha
picanha_Mat_25         picanha

Если у меня есть alcatra как часть слова на column 1, я просто хочу alcatra на column 2.

Я знаю, что могу использовать это:

file$2[ file$1 == 'aquiles_alcatra_Mat_15'] <- 'alcatra'

но у меня несколько ситуаций чуть ли не 300. И пробовал как-то так:

file$2[ file$1 == '.*alcatra*'] <- 'alcatra'

Но не работал.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
21
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Возможное решение, основанное на dplyr и stringr::str_detect:

library(tidyverse)

df %>% 
  mutate(V2 = if_else(str_detect(V1, "alcatra"), "alcatra", V2))

#>                       V1      V2
#> 1 aquiles_alcatra_Mat_15 alcatra
#> 2 aquiles_alcatra_Mat_15 alcatra
#> 3         alcatra_Mat_15 alcatra
#> 4         alcatra_Mat_20 alcatra
#> 5         alcatra_Mat_25 alcatra
#> 6         picanha_Mat_20 picanha
#> 7         picanha_Mat_25 picanha

Вы можете использовать следующий код:

library(dplyr)
df %>%
  mutate(v2 = case_when(grepl("alcatra", v1) ~ "alcatra",
                        grepl("picanha", v1) ~ "picanha"))

Выход:

                      v1      v2
1 aquiles_alcatra_Mat_15 alcatra
2 aquiles_alcatra_Mat_15 alcatra
3         alcatra_Mat_15 alcatra
4         alcatra_Mat_20 alcatra
5         alcatra_Mat_25 alcatra
6         picanha_Mat_20 picanha
7         picanha_Mat_25 picanha

Данные

df <- data.frame(v1 = c("aquiles_alcatra_Mat_15", "aquiles_alcatra_Mat_15", "alcatra_Mat_15", "alcatra_Mat_20", "alcatra_Mat_25", "picanha_Mat_20", "picanha_Mat_25"),
                 v2 = c("picanha", "picanha", "picanha", "picanha", "picanha", "picanha", "picanha"))

Другие вопросы по теме