2017-01-12 5 views
0

Probleme mit meinem Code beim Versuch, meine Daten mit einer Spalte zu importieren, die die maximale Ganzzahl (.Machine $ integer.max = 2147483647) überschreitet. Mit read_csv von readr kann ich davon ausgehen, dass es als NA importiert wird und nicht abgerundet wird. Die Komplikation kommt von dem Versuch, mehrere csvs mit rbindlist zu importieren.Importieren von großen Zahlen beim Binden von CSV-Dateien

Hier ist meine aktuelle Setup:

load_df_path <- file.path(".../dffolder") #path to folder 
df_path_files <- list.files <- (load_df_path, full.names = TRUE) #list files in path 

df <- rbindlist(lapply(df_path_files, read_csv)) # read in csvs using readr 

Wie kann ich die letzte Zeile schreiben, um die CSV-Dateien zu importieren und die Spalte „Menge“ Zeichen anstelle von ganzen Zahlen drehen?

Hier sind ein paar Dinge, die ich ohne Erfolg versucht ...

## This gets error: Error in switch(tools::file_ext(path).... 
df <- rbindlist(lapply(df_path_files, read_csv(df_path_files, col_types = list(amount = col_character())))) 


## recreate read_csv and changed col_types = NULL to the above but getting the warning 
## Error in FUN(X[[i]], ...) : could not find function "read_delimited" 

tl; dr - Hilfe benötigt eine Liste von CSV-Dateien beim Ändern bestimmte Spalte in dem Zeichenformat oder ein int64 importieren.

Vielen Dank.

Antwort

1

Sie sind fast da, nur die Syntax ...

df_list <- lapply(df_path_files, read_csv, col_types = cols(amount = col_character())) 
df <- rbindlist(df_list) 

col_types erwartet NULL oder von cols etwas geschaffen. Siehe ?read_csv und ?cols.

Eine andere Idee: Vielleicht numeric statt int Durchsetzung eine Lösung sein könnte: Mit cols(amount = col_double()) Siehe hier: long/bigint/decimal equivalent datatype in R

+0

Vielen Dank für die Syntax fix! Ich werde einen Blick auf numerische verwenden! – ant

Verwandte Themen