Извлечение слов из строки в r - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть следующий текст в качестве примера в каждой строке моего фрейма данных, df:

[{'id': 16, 'name': 'Soccer'}, {'id': 35, 'name': 'Basketball'}, {'id': 10751, 'name': 'Boxing'}]

Есть ли способ извлечь слова (футбол, баскетбол, бокс) из этого текста? Извините, я новичок в анализе текста в R.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Похоже, у вас есть входная строка JSON. Вы можете проанализировать строку JSON с помощью jsonlite::fromJSON и извлечь соответствующий столбец name:

# Sample string
ss <- "[{'id': 16, 'name': 'Soccer'}, {'id': 35, 'name': 'Basketball'}, {'id': 10751, 'name': 'Boxing'}]";

# Parse JSON
library(jsonlite);
df <- fromJSON(txt = gsub("'", "\"", ss));

# Extract words
df$name;
#[1] "Soccer"     "Basketball" "Boxing"
0 голосов
/ 27 апреля 2018

Может быть что-то вроде следующего.

x <- "[{'id': 16, 'name': 'Soccer'}, {'id': 35, 'name': 'Basketball'}, {'id': 10751, 'name': 'Boxing'}]"
g <- gregexpr("[[:alpha:]]+", x)
y <- unlist(regmatches(x, g))
y[y != "id" & y != "name"]
#[1] "Soccer"     "Basketball" "Boxing"

Другая возможность для этой последней инструкции - использовать %in%.

y[!y %in% c("id", "name")]
#[1] "Soccer"     "Basketball" "Boxing"

Таким образом, вы можете иметь вектор нежелательных строк, например c("id", "name"), и избежать длинного соединения &.

...