Поиск последовательности строк в нескольких файлах в каталоге с использованием R - PullRequest
0 голосов
/ 27 мая 2018

Я пишу программу R, которая читает файлы CSV в моем каталоге, ищет строки символов, которые я сохранил в векторе с именем parentVector, и записывает соответствующую строку в выходной файл CSV с именем df.csv.Вот что у меня есть:

setwd("my_directory")

# variable for csv directory
csvFolder <- "csv_directory"

flist <- list.files(path = csvFolder)
masterCorpus <- data.frame()

# This vector gives you the full file list in your directory
allFilesInDirectory <- list.files(csvFolder, full=TRUE)

# This vector will read the data from allFilesInDirectory vector
allTheData <- lapply(allFilesInDirectory, read.csv, header=TRUE)

parentVector <- c("Mother","mother", "Father","father","Adult","adult","MOT","FAT")

Как мне закончить компонент этой программы, чтобы иметь возможность читать каждый CSV-файл в моем каталоге и искать строки, содержащиеся в parentVector?

1 Ответ

0 голосов
/ 27 мая 2018

Это можно сделать очень быстро, используя пакет stringr

После того, как вы прочитали csv во фрейм данных, вы можете проверить, содержит ли строка какую-либо из строк в parentVectorсимвольный вектор путем создания регулярного выражения для каждого из этих элементов, разделенных "|"оператор регулярного выражения OR.Вы можете сделать это быстро с помощью paste0, как показано ниже.Затем используйте это как регулярное выражение, которое вы передаете в качестве аргумента шаблона в str_detect.Поэтому, если у вас есть csv, считанный в переменную с именем df, он будет выглядеть так:

library(stringr)
library(dplyr)

parent_vector_pattern <- paste0(parentVector, collapse="|")

filtered_df <- df %>%
    mutate(contains_pattern = str_detect(COLUMN_WITH_TEXT_NAME_HERE, parent_vector_pattern) %>%
    filter(contains_pattern)

Обратите внимание, что mutate, filter и%>% не входят в пакет dplyr.

...