#r #data.table #pdftools
Вопрос:
У меня есть этот вывод из pdftools pdf_data() для страницы финансовой отчетности города. К сожалению, в редких случаях захват линии y немного сбивается, как показано ниже. Я хотел бы иметь возможность группироваться по y, включая случаи, когда y равно -1.
library(data.table)
data <-
read.csv(
text =
"x, y, textn43, 391, Totaln66, 391, Expendituresn260, 390, 6476803n542, 390, 6773717"
)
data <- setDT(data)
# View data
print(data)
#> x y text
#> 1: 43 391 Total
#> 2: 66 391 Expenditures
#> 3: 260 390 6476803
#> 4: 542 390 6773717
# The problem
data[, paste(text, collapse = ""), y]
#> y V1
#> 1: 391 Total Expenditures
#> 2: 390 6476803 6773717
Желаемый вывод примерно такой, если y <= y 1 и y => y — 1:
#> y V1
#> 1: c(391, 390) Total Expenditures 6476803 6773717
Большинство попыток группировки по диапазону предполагают создание новых столбцов для hi и low, создание новой переменной cut() для группировки, но я не был уверен, с чего начать это реализовывать. У меня также есть тысячи страниц, где буквы » у » постоянно меняются.
Я обычно использую в data.table, поэтому решение для этого гораздо предпочтительнее.
Создано 2021-05-20 пакетом reprex (v2.0.0)
Комментарии:
1. На самом деле не совсем ясно, к чему вы здесь стремитесь. Не могли бы вы предоставить ожидаемый результат?
2. Я отредактировал, как мог, чтобы лучше объяснить. В принципе, как вы группируете по заданному диапазону значений вокруг сгруппированного целого числа. Если у подобной операции есть название, просто знание этого поможет.
3. Я не уверен, почему вы хотели бы получить такой результат, поэтому трудно экстраполировать то, что вы хотели бы получить, если бы было больше значений y. Должна ли каждая строка просто иметь 2 значения
y
? Что делать, если ваши исходные данные имеют 390, 391, 392, 393, то вы возвращаете строку для каждого из c(390, 391), c(391 392) и c(392 393). Кроме того, ваш вывод в V1 содержит текст y=390 после вывода y=391. Это намеренно или всегда должны быть персонажи в первую очередь?4. Это отсканированные строки pdf-файла, в которых, как представляется, небольшое число имеет слегка различающееся вертикальное выравнивание. Каждая сгруппированная строка должна состоять из фактического значения самого y, y -1 и y 1, поэтому в каждой из них будет 3 возможных значения y. Разница в уровнях y обычно составляет около 12, как и было бы естественно на странице, поэтому существует небольшой риск того, что непреднамеренная строка y окажется в двух группах. Обратный вывод в V1-это ошибка, которую я исправлю.
5. в порядке ли вы
V1
в соответствии с порядкомx
или просто в порядке, в котором он находится, иx
это ничто?