Как удалить слово и что следует за ним в R-векторе? - PullRequest
0 голосов
/ 11 апреля 2019

Я новичок в R, и мне нужно удалить слово и то, что следует за ним в кавычках из вектора в кадре данных.

Вот кое-что из того, что у меня есть:

c("'character': 'Ted the Bellhop', 'credit_id': '52fe420dc3a36847f80001b7', 2",
  "'character': 'Man', 'credit_id': '52fe420dc3a36847f800018b', 2",
  "'character': 'Angela', 'credit_id': '52fe420dc3a36847f8000183', 1")

Я работаю с большим набором данных, поэтому мне нужно найти способ удалить «характер»: и что происходитпосле этого («Тед Беллхоп», «Человек» и т. д.)

Я пытался использовать для этого fromJSON, но это не сработало, поэтому я решил удалить вещи вручную.Я смог удалить поле, содержащее только цифры, используя:

x <- gsub("'cast_id': [[:digit:]]+,", "", x)

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Это должно сделать это:

x <- gsub("'character': '[^']*',", "", x)

Это почти то же самое, что вы сделали для поля cast_id, за исключением того, что вместо цифр будут удалены значения, соответствующие регулярному выражению '[^']*'.Прочитайте это как:

  • [^']: любой символ, отличный от '
  • [^']*: такой же, как указано выше, повторяется 0 или более раз
  • '[^']*': то же, что и выше, заключено в одинарные кавычки

Надеюсь, это имеет смысл.

0 голосов
/ 11 апреля 2019

Мне все еще не ясно, ожидаемый результат; это то, что вы ищете?

sub("^.+\\s(?='credit_id')", "", ss, perl = T)
#[1] "'credit_id': '52fe420dc3a36847f80001b7', 2"
#[2] "'credit_id': '52fe420dc3a36847f800018b', 2"
#[3] "'credit_id': '52fe420dc3a36847f8000183', 1"

Или, может быть, это?

sub("^.+\\s('credit_id': '\\w+'),.+$", "\\1", ss, perl = T)
#[1] "'credit_id': '52fe420dc3a36847f80001b7'"
#[2] "'credit_id': '52fe420dc3a36847f800018b'"
#[3] "'credit_id': '52fe420dc3a36847f8000183'"

Пример данных

ss <- c("'character': 'Ted the Bellhop', 'credit_id': '52fe420dc3a36847f80001b7', 2",
  "'character': 'Man', 'credit_id': '52fe420dc3a36847f800018b', 2",
  "'character': 'Angela', 'credit_id': '52fe420dc3a36847f8000183', 1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...