Выберите строки с определенными значениями и обновите в R - PullRequest
0 голосов
/ 08 мая 2020

Я хочу выбрать строки, содержащие 'dm', следует использовать что-то вроде% dm%, а затем обновить их эти строки, добавив '*' в начало и конец строки. Примером может быть:

id  text
1   abc
2   admc

Результат:

id  text
 1   abc
 2   *admc*

Ответы [ 2 ]

4 голосов
/ 08 мая 2020

Вы можете идентифицировать строки с помощью "dm" с помощью grep / grepl и изменять их значения с помощью paste0.

inds <- grep('dm', df$text)
df$text[inds] <- paste0('*', df$text[inds], '*')
df

#  id   text
#1  1    abc
#2  2 *admc*

Использование синтаксиса data.table позволяет избежать создания временной переменной (inds).

library(data.table)
setDT(df)[grep('dm', text), text := paste0('*', text, '*')]

data

df <- structure(list(id = 1:2, text = c("abc", "admc")), 
class = "data.frame", row.names = c(NA, -2L))
2 голосов
/ 08 мая 2020

Вот решение tidyverse.

  1. Сначала определите присутствие «dm» с помощью stringr::str_detect
  2. Затем, используя dplyr::if_else, если «dm» присутствует, добавьте / добавьте "*", используя paste0; в противном случае оставьте текст как есть

_

df %>% 
  mutate(text = if_else(str_detect(text, "dm"), paste0("*", text, "*"), text))

data

df <- read.table(text = "id  text
                 1   abc
                 2   admc", header = TRUE, stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...