Changed search function
This commit is contained in:
parent
1828d23a83
commit
761695c584
1 changed files with 23 additions and 14 deletions
|
|
@ -3,38 +3,37 @@ library("writexl")
|
|||
library("dplyr")
|
||||
library("xlsx")
|
||||
library("stringi")
|
||||
library("stringr")
|
||||
library("tidyverse")
|
||||
|
||||
#Konfiguration einbinden
|
||||
source("config/config.R")
|
||||
source("sparql.R")
|
||||
|
||||
#Datenbank einlesen und doppelte entfernen
|
||||
vorhanden_df <- data.frame(get_current_geoera_lit_db()$citation)
|
||||
vorhanden_df_2 <- unique(vorhanden_df)
|
||||
inDB <- data.frame(get_current_geoera_lit_db()$citation)
|
||||
inDB <- unique(inDB)
|
||||
|
||||
#Spaltenname setzen
|
||||
colnames(vorhanden_df) <- (c(COLUMN_NAME))
|
||||
colnames(inDB) <- (c(COLUMN_NAME))
|
||||
|
||||
#Excel mit den Zitaten die hinzugefügt werden sollen einlesen
|
||||
neu_df <- data.frame(read_excel(paste(PFAD_EXCEL, "distincts_kontrolliert.xlsx", sep="")))
|
||||
neu_df <- data.frame(lapply(neu_df, stri_enc_toutf8))
|
||||
|
||||
#die beiden Dataframes zusammenfügen (braucht gleiche Spaltennamen)
|
||||
all_df <- rbind(vorhanden_df, neu_df)
|
||||
all_df <- rbind(inDB, neu_df)
|
||||
all_df_2 <- unique(all_df)
|
||||
|
||||
#inner_join finds common elements between two data frames
|
||||
#anti_join finds elements the are exclusively in one of the data frames
|
||||
|
||||
#Gemeinsame Element finden
|
||||
common <- inner_join(neu_df, vorhanden_df)
|
||||
common <- inner_join(neu_df, inDB)
|
||||
|
||||
#Finde die Element die noch nicht in der Datenbank sind
|
||||
not_in_db <- anti_join(neu_df, common)
|
||||
|
||||
#Die der Uniques in eine Datei schreiben
|
||||
write_xlsx(not_in_db, paste(PFAD_OUT, "not_in_db_",format(Sys.time(), "%Y_%m_%d") ,".xlsx", sep=""))
|
||||
|
||||
#### TO DO ####
|
||||
# Die direkte Vergleichsfunktion durch die %-Match-Funktion aus 03 ersetzen.
|
||||
# Ist etwas heikler, sollte aber weiterhin ganz gut funktionieren.
|
||||
|
|
@ -42,11 +41,12 @@ write_xlsx(not_in_db, paste(PFAD_OUT, "not_in_db_",format(Sys.time(), "%Y_%m_%d"
|
|||
|
||||
not_in_db_2 <- c()
|
||||
|
||||
#Zweite Schleife über die jeweiligen Zeilen des Spaltenvektors
|
||||
#Erste Schleife über die Zeilen der Einträge die nicht in der Datenbank sind
|
||||
for (zeile_excel in 1:nrow(not_in_db)) {
|
||||
|
||||
#Current Excel ist das derzeit behandelte Zitate / Zelle
|
||||
current_excel <- tolower(not_in_db[zeile_excel, 1])
|
||||
#current_excel <- tolower(not_in_db[zeile_excel, 1])
|
||||
current_excel <- str_squish(not_in_db[zeile_excel, 1])
|
||||
|
||||
#Falls die aktuelle Zelle leer ist wird die nächste Iteration begonnen um Rechenleistung zu sparen
|
||||
if (is.na(current_excel)) {
|
||||
|
|
@ -65,11 +65,13 @@ for (zeile_excel in 1:nrow(not_in_db)) {
|
|||
#Grund hierfür ist, dass das Jahr ein sehr guter zusätzlicher Indikator ist ob eine Publikation gleich ist
|
||||
excel_search_numbers <- unlist(str_extract_all(current_excel, "(?:19|20)\\d{2}"))
|
||||
|
||||
#Dritte Schleife die über die Vollzitatzeilen (INHALTE_DB) der Datenbank iteriert
|
||||
for (zeile_db in 1:nrow(inDB[, INHALTE_DB])) {
|
||||
#Zweite Schleife die über die Vollzitatzeilen der Datenbank iteriert
|
||||
for (zeile_db in 1:nrow(inDB)) {
|
||||
|
||||
#aktuell behandeltes Element der Datenbank
|
||||
current_db <- tolower(inDB[zeile_db,INHALTE_DB])
|
||||
#current_db <- tolower(inDB[zeile_db, 1])
|
||||
current_db <- str_squish(inDB[zeile_db, 1])
|
||||
|
||||
|
||||
#Zerlegt den Zelleninhalt und macht daraus eine Liste "Wort"liste aus alphanumerischen Zeichen, getrennt wird jeweils bei nicht-alphanumischen Zeichen
|
||||
db_search_all <- unlist(strsplit(gsub("[^[:alnum:] ]", "", current_db), " +"))
|
||||
|
|
@ -118,9 +120,16 @@ for (zeile_excel in 1:nrow(not_in_db)) {
|
|||
if ((percent_match_all >= MATCH_ALL) && (percent_match_numbers > MATCH_YEAR)) {
|
||||
|
||||
#to_replace_done[zeile_excel, 1] <- str_remove_all(inDB[zeile_db,ID], "[<>]")
|
||||
not_in_db_2.append(current_excel)
|
||||
not_in_db_2 <- c(not_in_db_2, current_excel)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
not_in_db_2 <- data.frame(not_in_db_2)
|
||||
not_in_db_2 <- unique(not_in_db_2)
|
||||
colnames(not_in_db_2) <- (c(COLUMN_NAME))
|
||||
|
||||
#Die der Uniques in eine Datei schreiben
|
||||
write_xlsx(not_in_db_2, paste(PFAD_OUT, "not_in_db_",format(Sys.time(), "%Y_%m_%d") ,".xlsx", sep=""))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue