Может быть достигнуто решение с использованием пакетов readLines
и dplyr
. Поскольку OP не предоставил четкого правила для определения полноты строки, следовательно, приведенное ниже решение предполагает, что row
завершено, если оно заканчивается на ;
.
A) Раствор для содержания filedata.txt
:
library(dplyr)
df <- data.frame(fileText = readLines("filedata.txt"), stringsAsFactors = FALSE)
tidy_text <- df %>% mutate(IsComplete = grepl(";$",df$fileText)) %>%
group_by(SameRow = cumsum(lag(IsComplete, default=1))) %>%
summarise(fileText = paste0(trimws(fileText), collapse=" "))
Результат:
tidy_text$fileText
#[1] "\"a bumblebee\"; \"a buzzard\"; \"a duck\"; \"a canary\"; \"a carp\"; \"a deer\"; \"a chamois\" \"A \"bird\"; \"a horse\";"
#[2] "\"a dog\"; \"a hen\"; \"a cat\"; \"a\" \"fish\"; \"a bee\" \"A lamb\"; \"an eagle\"; \"a lark\"; \"an ostrich\"; \"a bar\"; \"a woodcock\"; \"a buffalo\";"
Данные:
Содержание filedata.txt
"a bumblebee"; "a buzzard"; "a duck"; "a canary"; "a carp"; "a deer"; "a chamois" "A "bird"; "a horse";
"a dog"; "a hen"; "a cat"; "a"
"fish"; "a bee"
"A lamb"; "an eagle"; "a lark"; "an ostrich"; "a bar"; "a woodcock"; "a buffalo";
B) Раствор для содержания filedata2.txt
. Каждый ряд / наблюдение начинается с extraction;
df <- data.frame(fileText = readLines("filedata2.txt"), stringsAsFactors = FALSE)
tidy_text2 <- df %>% mutate(IsComplete = lead(grepl("^extraction;.*", df$fileText),
default = TRUE)) %>%
group_by(SameRow = cumsum(lag(IsComplete, default=1))) %>%
summarise(fileText = paste0(trimws(fileText), collapse=" "))
Результат № 2: Данные обобщены в 3 наблюдениях.
tidy_text2
# A tibble: 3 x 2
# SameRow fileText
# <int> <chr>
# 1 1 extraction;xxxx bvbbv ncnncbvbbv;fdrggggqggqhh;-276654.00;;-657321.00
# 2 2 extraction;fhdh bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj ;;-547743.00,-432743.00
# 3 3 extraction;shdfgqs bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj;;-547743.00;-432743.00
Данные: Содержимое filedata2.txt
extraction;xxxx bvbbv ncnncbvbbv;fdrggggqggqhh;-276654.00;;-657321.00
extraction;fhdh bvbbv dsmfdjjf
fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj
;;-547743.00,-432743.00
extraction;shdfgqs bvbbv dsmfdjjf fdhhhhdf;hqshfdsjf sdkfjdfjkdkfj;;-547743.00;-432743.00