Ich versuche, Excel-Dateien als Arbeitsmappen zu schreiben, in denen Spalten mehr als eine Bedingung erfüllen. Ich erhalte hier Fehler mit grep-Funktion und unerwartet }
Wenn ich die grep-Funktion entferne, wird der Code mit der ersten Bedingung ausgeführt.
Nur ein Beispiel, wenn erste Bedingung == 10, gut und wenn zweite Bedingung = "test", guter Ordner. Sonst fehlerhafter Ordner.
Dieser Code ist in eine for-Schleife eingebettet. „Daten" ist der Rahmen, der in jedem Durchgang erstellt wird, „Dateien1" ist der Name jeder Excel-Arbeitsmappe, die erfasst und dann in jedem Durchgang in den gewünschten Ordner geschrieben wird.
if (nchar(data$`Serial Number:`) == 10) %>%
if grep(pattern = "test",x = data$`Product:`, value = TRUE){
write_xlsx(data, path = (paste0("good/", files1, "x")))
}else{
write_xlsx(data, path = (paste0("bad/", files1, "x")))
}
Danke
Lösung des Problems
konnte ich lösen. Code-Ergebnis:
- Importieren Sie Dateien aus Ordnern und behalten Sie Namen bei
- Schleifenbedingungen zum Überprüfen auf col1 und col5 - Haben sie die gewünschten Daten? Wenn nicht, gehe zum gewünschten Pfad, wenn ja, gehe zum gewünschten Pfad und speichere unter Beibehaltung des Dateinamens
Bitte, wenn jemand Vorschläge hat, wie man das bereinigen kann, lass es bitte wissen. Mich würde interessieren, wie man dies mit Rohren verbessern könnte. Danke!
files <-
list.files(path = "mypath/", pattern = "*xls")
for (i in 1:length(files)) {
files1 <-
basename(files[i])
files1 <- gsub(pattern = "'", replacement = "", x = files1)
files1 <- gsub(pattern = "\\*", replacement = "", x = files1)
data <-
read_excel(paste0("mypath/", files[i]))
data$col1 <- as.character(data$col1)
data <- data %>%
mutate(charCount = nchar(data$col1))
data <- data %>% mutate(across(where(is.character), str_trim))
if(any(grepl(pattern = "input pattern", x = data$charCount)) == FALSE) {
write_xlsx(data, path = (paste0("path1/", files1, "x")))
}
if (any(grepl(pattern = "input pattern", x = data$col1) == TRUE) && any(grepl(pattern = "input pattern",x = data$col5,ignore.case = T) == TRUE)){
write_xlsx(data[,1:11], path = (paste0("path2/", files1, "x")))
}else{
write_xlsx(data[,1:11], path = (paste0("bad/", files1, "x")))
}}
Keine Kommentare:
Kommentar veröffentlichen