Ich habe eine for
Schleife, die zusammenfassende Statistiken für jede Volkszählung in meiner Gegend läuft, und ich brauche sie in einen Ordner als CSV-Datei ausgegeben werden. Die Schleife funktioniert jedoch, die Ausgabedateien haben den Typ "Datei".r Funktion "write.csv" nicht Dateierweiterung
Ich möchte auch alle genannten Dateien in einem Datenrahmen zu kombinieren, so dass ich eine Datei mit der Zusammenfassung Statistiken für alle Volkszählungs-Traktate haben. Ich habe eine "multi merge" -Funktion gefunden, aber es funktioniert nicht richtig und ich denke, dass es mit der Tatsache zu tun hat, dass meine Dateitypen keine CSVs sind. Mein Code Chunk ist unten:
########################################################################################
## create tables with summary statistic's###############################################
########################################################################################
setwd("C:/Data/nih/data/output/csv/merge") #choose destination folder
for (result in [email protected]){
print(as.character(result$areaid)) #print each file name into console as script runs
census.name <- as.character(result$areaid) #derive census tract from area ID
#create table for each census tract using summary statistics
table.unique <- c(mean(result$selection$BMI, na.rm = TRUE),sum(result$selection$female), sum(result$selection$male),
sum(result$selection$diabet),sum(result$selection$white), sum(result$selection$black),
sum(result$selection$indian), sum(result$selection$asian), sum(result$selection$pacific),
sum(result$selection$other), sum(result$selection$mixed))
table.unique <- c(census.name,table.unique) #combine census tract as column to summary stats
col.names <- c("areaID","BMI","female","male","diabet","white","black","indian","asian","pacific","other","mixed")
table.unique <- as.numeric(table.unique)
table.unique <-as.data.frame(t(table.unique)) #turn comlums into rows
names(table.unique) <- col.names #add column names
write.csv(table.unique, file = census.name) #write csv to output folder
}
#merge all files into single data frame
multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=TRUE)})
Reduce(function(x,y) {merge(x,y)}, datalist)
}
all.tracts <- multmerge("C:/Data/nih/data/output/csv/merge")
Der Code funktioniert, dass sie Dateien in den Ausgabeordner gibt, und sie durch Komma getrennt sind, wenn sie in Excel geöffnet, aber der einzige Weg, dies zu tun ist, zu gehen und manuell hinzufügen .csv zum Ende des Namens, der den Zweck einer Schleife besiegt. Irgendwelche Vorschläge wären hilfreich!
Versuchen 'write.csv (table.unique, file = Paste (census.name, census.name mit " csv", sep = "")) ' –
Nirgendwo sagt' write.csv', dass es den von Ihnen angegebenen Dateinamen ändert. Wenn Sie die '.csv'-Erweiterung möchten, fügen Sie sie in den Dateinamen ein, den Sie' write.csv' geben. – Gregor
@ d.b Das hat super funktioniert! Danke für die schnelle Antwort! – Michael