Как удалить "|" Не оставляя места из списка в R - PullRequest
2 голосов
/ 24 марта 2020

Я использую инструмент pdf для извлечения данных из отсканированного файла, сначала преобразовав его в png. Так как инструмент pdf читал из png, были некоторые знаки препинания без всякой причины. Я могу удалить большинство из них, кроме «|».

Вот мои данные:

c("| January 2,310,501 2,342,654 + 14%", "| February 2,221,036 2,316,278 + 4.3%", )

Я хочу, чтобы мои данные могли быть такими:

c("January 2,310,501 2,342,654 + 14%", "February 2,221,036 2,316,278 + 4.3%",)

Как видно из рисунка, прикрепленного «|» изменил структуру моих данных, и я не могу просто прочитать данные из второго столбца. То, что я хочу, это удалить "|" стихия вообще. Тогда остальные элементы могут двигаться вперед. Вы также можете найти прикрепленный файл. Спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы можете использовать lapply для удаления элементов, которые "|".

lapply(test2, function(x) x[x != '|'])

#[[1]]
#[1] "January" "test"   

#[[2]]
#[1] "February"  "2, 602,33"

Аналогично, используя map in purrr

purrr::map(test2,  ~.x[.x != '|'])

Для обновленных данных мы можем использовать gsub

test <- trimws(gsub('\\|', '', test))
test

# [1] "January 2,310,501 2,342,654 + 14%"        "February 2,221,036 2,316,278 + 4.3%"     
# [3] "March 2,602,503 2,571,661 ( -1.2% )"      "April 2,471,788 2,485,989 i 0.6%"        
# [5] "May 2,418,547 2,512,922 + 3.9%"           "June 2,412,882 2,430,232 + 0.7%"         
# [7] "July 2,462,907 2,535,594 + 3.0%"          "August 2,526,211 2,638,753 + 4.5%"       
# [9] "September 2,434,132 2,480,466 * + 1.9%"   "October 2,552,215 2,642,990 * + 3.6%"    
#[11] "November 2,306,106 2,428,806 + 5.3%"      "December _ 2,283,294 2,250,016 ( -1.5% )"

данные

test2 <- list(c('|', 'January', 'test'), c('February', '2, 602,33', '|'))
1 голос
/ 24 марта 2020

Мы можем использовать setdiff

lapply(test2, setdiff, "|")
#[[1]]
#[1] "January" "test"   

#[[2]]
#[1] "February"  "2, 602,33"

данные

test2 <- list(c('|', 'January', 'test'), c('February', '2, 602,33', '|'))
...