我的数据框的每一行都有以下文字作为示例:df:
[{'id': 16, 'name': 'Soccer'}, {'id': 35, 'name': 'Basketball'}, {'id': 10751, 'name': 'Boxing'}]
有没有办法从这段文字中提取单词(足球,篮球,拳击)?对不起,我是R。
中的文本分析新手答案 0 :(得分:3)
看起来你有一个JSON输入字符串。您可以使用jsonlite::fromJSON
解析JSON字符串,并提取相关列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"
答案 1 :(得分:0)
可能类似以下内容。
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")
,并避免长连接&
。