Как переименовать строку в столбце, который содержит обратную косую черту sh в R - PullRequest
1 голос
/ 12 февраля 2020

У меня есть набор данных из миллиона строк, df,

  Name         

  \\tia@gmail.com\Out
  \\tia@gmail.com\Out
  \\tia@gmail.com\Out
  \\tia@gmail.com\In
  \\tia@gmail.com\In
  \\tia@gmail.com\In

Я хотел бы заменить все случаи, когда \ tia@gmail.com \ Out встречается с Outboxdata. Это мой желаемый вывод:

  Name

  Outboxdata
  Outboxdata
  Outboxdata
  \\tia@gmail.com\In
  \\tia@gmail.com\In
  \\tia@gmail.com\In

Вот dput:

 structure(list(Name = structure(c(2L, 2L, 2L, 1L, 1L, 1L), .Label =       c("\\\\tia@gmail.com\\In", 
 "\\\\tia@gmail.com\\Out"), class = "factor")), class = "data.frame", row.names   = c(NA, 
 -6L))

Это то, с чего я начинаю, я знаю, что могу использовать dplyr и gsub:

df %>%
   gsub,df$Name

У меня нет правильного синтаксиса, и я продолжу исследовать этот

1 Ответ

2 голосов
/ 12 февраля 2020

Мы можем использовать str_replace

library(dplyr)
library(stringr)
df %>%
  mutate(Name = str_replace(Name, ".*[^A-Za-z]([A-Za-z]+)$", "\\1boxdata"))
#        Name
#1 Outboxdata
#2 Outboxdata
#3 Outboxdata
#4 Outboxdata

Обновление

Если мы хотим заменить только строки, имеющие tia@gmail.com, то

df %>%
   mutate(Name = str_replace(Name, ".*tia@gmail.com\\\\+Out", "Outboxdata"))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...