R - датафрейм с текстом, замените строку в позиции - PullRequest
1 голос
/ 16 апреля 2020

как я могу заменить дату (или любой другой текст) новой строкой? Пожалуйста, не используйте regexp, поскольку текст всегда может быть уникальным, но дата всегда находится на одной и той же позиции.

dt <-
  data.frame(
    id = c(1, 2, 3),
    text = c(
      "It was 2020-01-11",
      "It was 2020-03-21",
      "It was 2020-04-31"
    )
  )

результат должен быть. Я могу извлечь эту дату с помощью команды substring . Но как я могу поместить его в мой текстовый столбец?

result <-
  data.frame(
    id = c(1, 2, 3),
    text = c(
      "It was 2020-01-01",
      "It was 2020-01-01",
      "It was 2020-01-01"
    )
  )

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

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

out <- transform(dt, text = paste0(substring(text, 1, 7), substring(text[1], 8)))
out 
#  id              text
#1  1 It was 2020-01-11
#2  2 It was 2020-01-11
#3  3 It was 2020-01-11

Или другой вариант substr назначение

dt$text <- as.character(dt$text)
substr(dt$text, 8, nchar(dt$text)) <- substring(dt$text[1], 8)
dt
#  id              text
#1  1 It was 2020-01-11
#2  2 It was 2020-01-11
#3  3 It was 2020-01-11
0 голосов
/ 16 апреля 2020
result <- dt
result$text <- gsub(pattern = "^It was 2020\\-[0-9]{2}\\-[0-9]{2}$", replacement = "It was 2020-01-01", result$text)

или если вы просто хотите захватить весь текст до группы шаблонов даты в первую группу и заменить шаблон, который выглядит как дата (2020-мм-дд), с фиксированным значением.

result$text <- gsub(pattern = "^(.*) (2020\\-[0-9]{2}\\-[0-9]{2})(.*)", replacement = "\\1 2020-01-01 \\3", result$text)
...