Also schrieb ich ein Skript, um Änderungen an Datenrahmen vorzunehmen, aber ich bin auf ein paar Probleme gestoßen, die ich nicht lösen kann. Zuallererst scheint der Teil, wo ich die Spaltenvariable mac_sector in Sektor umbenennen möchte, nicht zu funktionieren, er benennt nichts um, noch gibt es einen Fehler.Übereinstimmende Namen von Elementen in einer Liste zu Dateinamen & Umbenennen von Variablen in R
Auch wenn ich die geänderten Datensätze speichere, heißen sie einfach 1,2,3 ... usw. Ich möchte jedoch nur, dass sie den gleichen Namen haben, den sie ursprünglich hatten. Ich habe versucht, dies durch "names(dflist)[i] <- gsub("\\.dta$", "", files)"
zu tun, aber das funktioniert nicht.
Es diese Warnmeldungen auch ergibt, obwohl ich weiß nicht, ob sie eine tatsächliche Auswirkung auf die Dateien haben, da ich keine Komplikationen gesehen habe: Warnmeldungen:
1: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
2: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
3: In save.dta13(dflist[[i]], paste0(i, ".dta")) :
Number of variable labels does not match number of variables.
Variable labels dropped.
Schließlich ist es eine Möglichkeit, Dateien in einem anderen Verzeichnis als Ihrem Arbeitsverzeichnis zu speichern?
Mein Skript:
setwd("C:\\....")
files = list.files(pattern="*.dta")
dflist <- list()
for (i in 1:length(files)){
dflist[[i]] <- read.dta13(files[i], nonint.factors = TRUE)
if("mac_sector" %in% colnames(dflist[[i]])){ #rename mac_sector to sector if present
rename(dflist[[i]], c(mac_sector="sector"))}
if(!("sector" %in% colnames(dflist[[i]]))){ #This creates "sector" variable if it doesn't exist already.
dflist[[i]]$sector <- "total"}
names(dflist)[i] <- gsub("\\.dta$", "", files) #Matching the names of the elements to the filenames
save.dta13(dflist[[i]], paste0(i, ".dta")) #Saving dataset
}
Eingang: Datenrahmen 1:
country SA year DV VI DI DIV DIV_s DIV_p t ta
1 AUSTRIA NA 2001 0 NA NA NA NA NA 0 NA
2 AUSTRIA NA 2002 0 NA NA NA NA NA 0 NA
3 AUSTRIA NA 2003 0 NA NA NA NA NA 0 NA
4 AUSTRIA NA 2004 0 NA NA NA NA NA 0 NA
5 AUSTRIA NA 2005 0 NA NA NA NA NA 0 NA
Datenrahmen 2:
country mac_sector SA year DV VI DI DIV DIV_s DIV_p t ta
1 BELGIUM ing 0 2001 0 NA NA NA NA NA 3036 0.09725133
2 BELGIUM ing 0 2002 0 NA NA NA NA NA 2970 0.09641831
3 BELGIUM ing 0 2003 0 NA NA NA NA NA 2917 0.09791633
4 BELGIUM ing 0 2004 0 NA NA NA NA NA 2907 0.10297798
5 BELGIUM ing 0 2005 0 NA NA NA NA NA 2904 0.10182869
Datenrahmen 3:
country sector SA year DV VI DI DIV DIV_s DIV_p t ta
1 BELGIUM prod 0 2001 0 NA NA NA NA NA 392 0.09688306
2 BELGIUM prod 0 2002 0 NA NA NA NA NA 398 0.09394456
3 BELGIUM prod 0 2003 0 NA NA NA NA NA 394 0.09536502
4 BELGIUM prod 0 2004 0 NA NA NA NA NA 404 0.10367264
5 BELGIUM prod 0 2005 0 NA NA NA NA NA 407 0.08961585
Ja ich schon versucht, 'Umbenennen (dflist [[i]] , c ("mac_sector" = "sektor")) ', funktioniert nicht! Keine Namen (dflist) [i] <- gsub ("\\. Dta $", "", Dateien [i]) ', sie werden immer noch als 1,2,3 ... – DuEllier
Schande, Herausforderung ist wir können Ihre Eingabedaten nicht wiederherstellen ... – desc
Ich habe aufgenommen, wie meine Eingabedaten aussehen, wenn das hilft. – DuEllier