选择单词在句子中出现的行
Selecting rows where a word occurs in the sentence
我想从我从项目 Gutenberg r 包中获得的数据集中过滤掉特定的行。为此,我只想 select 包含给定单词的行,但问题是我的所有行都有多个单词,因此使用 filter() 将不起作用。
例如:
句子是:"The Little Vanities of Mrs. Whittaker: A Novel"
。我想过滤掉所有包含“小说”一词的行,但我不知道如何过滤。
gutenberg_full_data <- left_join(gutenberg_works(language == "en"), gutenberg_metadata, by = "gutenberg_id")
gutenberg_full_data <- left_join(gutenberg_full_data, gutenberg_subjects)
gutenberg_full_data <- subset(gutenberg_full_data, select = -c(rights.x,has_text.x,language.y,gutenberg_bookshelf.x, gutenberg_bookshelf.y,rights.y, has_text.y,gutenberg_bookshelf.y, gutenberg_author_id.y, title.y, author.y))
gutenberg_full_data <- gutenberg_full_data[-which(is.na(gutenberg_full_data$author.x)),]
novels <- gutenberg_full_data %>% filter(subject == "Drama")
original_books <- gutenberg_download((novels), meta_fields = "title")
original_books
tidy_books <- original_books %>%
unnest_tokens(word, text)
这是我使用“gutenbergr”包获取数据框的代码。
为此,您可以使用基础 R 中的 grepl()
。 grepl()
returns True
如果单词存在,False
否则。
text = "The Little Vanities of Mrs. Whittaker: A Novel"
word = "Novel"
> grepl(word, text)
[1] TRUE
您的 original_books
文件需要大量下载,因此我将向您展示在 novels
数据框的 title.x
中搜索“Plays”的示例。
> novels %>%
mutate(contains_play = grepl("Plays", title.x))
# A tibble: 54 × 8
gutenberg_id title.x author.x gutenberg_autho… language.x subject_type subject contains_play
<int> <chr> <chr> <int> <chr> <chr> <chr> <lgl>
1 1308 A Florentine Tr… Wilde, Oscar 111 en lcsh Drama FALSE
2 2270 Shakespeare's F… Shakespeare,… 65 en lcsh Drama FALSE
3 2587 Life Is a Dream Calderón de … 970 en lcsh Drama FALSE
4 4970 There Are Crime… Strindberg, … 1609 en lcsh Drama FALSE
5 5053 Plays by August… Strindberg, … 1609 en lcsh Drama TRUE
6 5618 Six Plays Darwin, Flor… 1814 en lcsh Drama TRUE
7 6587 King Arthur's S… Dell, Floyd 2100 en lcsh Drama TRUE
8 6782 The Robbers Schiller, Fr… 289 en lcsh Drama FALSE
9 6790 Demetrius: A Pl… Schiller, Fr… 289 en lcsh Drama FALSE
10 6793 The Bride of Me… Schiller, Fr… 289 en lcsh Drama FALSE
# … with 44 more rows
请注意 grepl()
允许第二个参数是向量。因此,没有必要使用 rowwise()
。如果它只允许在字符串中搜索,我们将不得不使用 rowwise()
.
您可能正在寻找如下内容。它将查找包含您输入的关键字的 any 字符串。
stringr::str_detect(variable, "keyword")
仅对特定字符串进行子集化的示例
library(stringr)
df <- df %>% filter(str_detect(column_that_contains_the_word, "the word"))
在你的情况下(我假设)过滤掉特定的字符串并保留所有其他的
library(stringr)
original_books <- original_books %>% filter(!str_detect(title, c("novel", "Novel", "NOVEL")))
让我们知道它是否有效。
我想从我从项目 Gutenberg r 包中获得的数据集中过滤掉特定的行。为此,我只想 select 包含给定单词的行,但问题是我的所有行都有多个单词,因此使用 filter() 将不起作用。
例如:
句子是:"The Little Vanities of Mrs. Whittaker: A Novel"
。我想过滤掉所有包含“小说”一词的行,但我不知道如何过滤。
gutenberg_full_data <- left_join(gutenberg_works(language == "en"), gutenberg_metadata, by = "gutenberg_id")
gutenberg_full_data <- left_join(gutenberg_full_data, gutenberg_subjects)
gutenberg_full_data <- subset(gutenberg_full_data, select = -c(rights.x,has_text.x,language.y,gutenberg_bookshelf.x, gutenberg_bookshelf.y,rights.y, has_text.y,gutenberg_bookshelf.y, gutenberg_author_id.y, title.y, author.y))
gutenberg_full_data <- gutenberg_full_data[-which(is.na(gutenberg_full_data$author.x)),]
novels <- gutenberg_full_data %>% filter(subject == "Drama")
original_books <- gutenberg_download((novels), meta_fields = "title")
original_books
tidy_books <- original_books %>%
unnest_tokens(word, text)
这是我使用“gutenbergr”包获取数据框的代码。
为此,您可以使用基础 R 中的 grepl()
。 grepl()
returns True
如果单词存在,False
否则。
text = "The Little Vanities of Mrs. Whittaker: A Novel"
word = "Novel"
> grepl(word, text)
[1] TRUE
您的 original_books
文件需要大量下载,因此我将向您展示在 novels
数据框的 title.x
中搜索“Plays”的示例。
> novels %>%
mutate(contains_play = grepl("Plays", title.x))
# A tibble: 54 × 8
gutenberg_id title.x author.x gutenberg_autho… language.x subject_type subject contains_play
<int> <chr> <chr> <int> <chr> <chr> <chr> <lgl>
1 1308 A Florentine Tr… Wilde, Oscar 111 en lcsh Drama FALSE
2 2270 Shakespeare's F… Shakespeare,… 65 en lcsh Drama FALSE
3 2587 Life Is a Dream Calderón de … 970 en lcsh Drama FALSE
4 4970 There Are Crime… Strindberg, … 1609 en lcsh Drama FALSE
5 5053 Plays by August… Strindberg, … 1609 en lcsh Drama TRUE
6 5618 Six Plays Darwin, Flor… 1814 en lcsh Drama TRUE
7 6587 King Arthur's S… Dell, Floyd 2100 en lcsh Drama TRUE
8 6782 The Robbers Schiller, Fr… 289 en lcsh Drama FALSE
9 6790 Demetrius: A Pl… Schiller, Fr… 289 en lcsh Drama FALSE
10 6793 The Bride of Me… Schiller, Fr… 289 en lcsh Drama FALSE
# … with 44 more rows
请注意 grepl()
允许第二个参数是向量。因此,没有必要使用 rowwise()
。如果它只允许在字符串中搜索,我们将不得不使用 rowwise()
.
您可能正在寻找如下内容。它将查找包含您输入的关键字的 any 字符串。
stringr::str_detect(variable, "keyword")
仅对特定字符串进行子集化的示例
library(stringr)
df <- df %>% filter(str_detect(column_that_contains_the_word, "the word"))
在你的情况下(我假设)过滤掉特定的字符串并保留所有其他的
library(stringr)
original_books <- original_books %>% filter(!str_detect(title, c("novel", "Novel", "NOVEL")))
让我们知道它是否有效。