Datenimport
Datenimport
Hallo,
bislang kam ich mit dem Datenimport ganz gut zurecht, in dem ich zum Erstellen einer .csv Datei Open Office Org benutzte.
Ich machte diese Exceldatei mit dem Programm auf und konnte dann eine saubere ,csv Datei erstellen, die ich anschließend z. B. mit
test<- readSeries(file.choose(), format = "%Y-%m-%d", sep = ",")
in R hochladen und bearbeiten konnte.
Mein Problem ist, die nun wesentlich größeren Datenmengen und Open Office Org kann eine Datei mit schlappen 20 MB noch nicht mal mehr öffnen und mit Excel kriege ich das Format nicht hin. Ich habe zwar dem Programm den max. Arbeitsspeicher zugefügt, aber nichts geht mehr.
Ein Datenbeispiel habe ich mal eingefügt, die Spaltenanzahl kann schon mal 3.000 Werte betragen, zusammen mit einer 5 jährigen Historie kommen halt leider größere Mengen hinzu.
Kennt jemand noch eine andere Alternative um Daten fehlerfrei einlesen zu können und was muss ich dabei beachten?
Grüße
Kalypso
bislang kam ich mit dem Datenimport ganz gut zurecht, in dem ich zum Erstellen einer .csv Datei Open Office Org benutzte.
Ich machte diese Exceldatei mit dem Programm auf und konnte dann eine saubere ,csv Datei erstellen, die ich anschließend z. B. mit
test<- readSeries(file.choose(), format = "%Y-%m-%d", sep = ",")
in R hochladen und bearbeiten konnte.
Mein Problem ist, die nun wesentlich größeren Datenmengen und Open Office Org kann eine Datei mit schlappen 20 MB noch nicht mal mehr öffnen und mit Excel kriege ich das Format nicht hin. Ich habe zwar dem Programm den max. Arbeitsspeicher zugefügt, aber nichts geht mehr.
Ein Datenbeispiel habe ich mal eingefügt, die Spaltenanzahl kann schon mal 3.000 Werte betragen, zusammen mit einer 5 jährigen Historie kommen halt leider größere Mengen hinzu.
Kennt jemand noch eine andere Alternative um Daten fehlerfrei einlesen zu können und was muss ich dabei beachten?
Grüße
Kalypso
- Dateianhänge
-
- Beispiel.xlsx
- (254.15 KiB) 107-mal heruntergeladen
Re: Datenimport
Ähemm... Excel ist dafür auch nicht gedacht / gut.Mein Problem ist, die nun wesentlich größeren Datenmengen
Schonmal an einen Datenbanklösung gedacht?
Ich kenne readSeries() jetzt nicht, aber das readxl package kann wunderbar Exceldateien einlesen.
Wenn du unbedingt ein timeSeries-Objekt brauchts, musst du den data.frame nur noch in so eines umwandeln.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Datenimport
Hallo Kalypso,
wie hast Du die csv-Datei erstellt? Denkst Du an das Dezimalkomma und an das Semikolon als Trennzeichen? Wenn ich in Deinem Code das Trennzeichen "," sehe, frage ich mich, welche read.csv-Funktion Du benutzt? Dann sollte es auch kein Problem mit dem Datum geben...
wie hast Du die csv-Datei erstellt? Denkst Du an das Dezimalkomma und an das Semikolon als Trennzeichen? Wenn ich in Deinem Code das Trennzeichen "," sehe, frage ich mich, welche read.csv-Funktion Du benutzt? Dann sollte es auch kein Problem mit dem Datum geben...
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Datenimport
Hallo!
5 Jahre täglich ein Wert sind 5 * 365,25 also unter 2000 Zeilen. Ein Dataframe mit 2000 Zeilen und 3000 Spalten sollte für R keine nennenswerte Belastung darstellen. Kannst ja mal schnell testen:
Sollte kein Problem sein.
Also vermute ich ein Problem in OpenOffice oder Excel - beides hier nur bedingt on topic. Vielleicht kann man ja nach 4 Jahren einen Schnitt machen, eine OpenOffice-Datei mit den Daten der ersten 4 Jahre erstellen, eine zweite mit den Daten danach und dann beide Dateien in R zusammenfügen?
Nochmal zeigen, dass R damit kein Problem hat:
Vielleicht habe ich das Problem auch nicht ausreichend verstanden.
LG,
Bernhard
5 Jahre täglich ein Wert sind 5 * 365,25 also unter 2000 Zeilen. Ein Dataframe mit 2000 Zeilen und 3000 Spalten sollte für R keine nennenswerte Belastung darstellen. Kannst ja mal schnell testen:
Code: Alles auswählen
daten <- as.data.frame(matrix(rnorm(2000*3000), nrow=2000))
Also vermute ich ein Problem in OpenOffice oder Excel - beides hier nur bedingt on topic. Vielleicht kann man ja nach 4 Jahren einen Schnitt machen, eine OpenOffice-Datei mit den Daten der ersten 4 Jahre erstellen, eine zweite mit den Daten danach und dann beide Dateien in R zusammenfügen?
Nochmal zeigen, dass R damit kein Problem hat:
Code: Alles auswählen
daten2 <- rbind(daten, daten)
dim(daten2)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Datenimport
@EDi,
hi, eigentlich kann man aus der Größe einer Datei nicht die Notwendigkeit einer Datenbanklösung schließen, die hat andere Funktionen.
ich hab mich mit dem Packet auseinander gesetzt, leider bin ich nicht schlau geworden:
> read_excel("SUP_USD_Vorbereitung csv_teil1.xlsx", col_names = TRUE, col_types = NULL)
# A tibble: 1,754 x 475
date SuP500_TR `3M Company` `Abbott Laboratories` `Accenture plc` `Activision Blizzard` `Acuity Brands Inc` `Adobe Systems Incorporated` `Advance Auto Parts Inc` `Advanced Micro Devices`
<dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm>
1 2010-12-28 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00
2 2010-12-29 1899-12-31 00:01:43 1899-12-31 00:00:20 1899-12-31 00:00:55 1899-12-31 00:19:13 1899-12-31 00:09:15 1899-12-30 23:59:46 1899-12-31 00:02:20 1899-12-31 00:04:21 1899-12-30 23:58:14
3 2010-12-30 1899-12-30 23:57:53 1899-12-30 23:56:21 1899-12-31 00:04:34 1899-12-30 23:54:05 1899-12-31 00:02:18 1899-12-30 23:54:09 1899-12-30 23:41:25 1899-12-31 00:05:52 1899-12-31 00:10:42
4 2010-12-31 1899-12-30 23:59:44 1899-12-30 23:56:01 1899-12-31 00:10:18 1899-12-31 00:02:05 1899-12-30 23:45:07 1899-12-30 23:34:16 1899-12-31 00:09:54 1899-12-30 23:47:42 1899-12-31 00:07:05
5 2011-01-03 1899-12-31 00:16:22 1899-12-31 00:08:11 1899-12-30 23:57:18 1899-12-31 00:02:59 1899-12-31 00:09:16 1899-12-31 00:42:12 1899-12-31 00:23:52 1899-12-30 23:45:52 1899-12-31 00:51:04
6 2011-01-04 1899-12-30 23:58:09 1899-12-30 23:58:01 1899-12-31 00:13:34 1899-12-30 23:50:31 1899-12-31 00:01:10 1899-12-30 23:42:03 1899-12-31 00:10:08 1899-12-30 22:48:20 1899-12-31 00:51:01
7 2011-01-05 1899-12-31 00:07:24 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:18 1899-12-30 23:32:26 1899-12-30 23:54:36 1899-12-31 00:32:27 1899-12-31 00:01:52 1899-12-31 00:23:00
8 2011-01-06 1899-12-30 23:57:30 1899-12-30 23:51:12 1899-12-30 23:57:02 1899-12-31 00:05:23 1899-12-30 23:56:30 1899-12-31 00:40:12 1899-12-31 00:02:15 1899-12-30 23:12:38 1899-12-30 23:24:27
9 2011-01-07 1899-12-30 23:57:21 1899-12-31 00:01:31 1899-12-31 00:05:59 1899-12-31 00:02:23 1899-12-30 23:41:13 1899-12-30 23:53:46 1899-12-30 23:49:45 1899-12-31 00:38:29 1899-12-31 00:23:12
10 2011-01-10 1899-12-30 23:58:01 1899-12-31 00:15:22 1899-12-30 23:47:12 1899-12-30 23:47:15 1899-12-30 23:44:32 1899-12-30 22:30:09 1899-12-31 00:41:21 1899-12-31 00:10:43 1899-12-31 00:58:43
# ... with 1,744 more rows, and 465 more variables: `Aetna Inc` <dttm>, `Affiliated Managers Group` <dttm>, `Aflac Incorporated` <dttm>, `Agilent Technologies` <dttm>, `Air Products and Chemicals` <dttm>, `Akamai Technologies` <dttm>,
# `Alaska Air Group` <dttm>, `Albemarle Corporation` <dttm>, `Alexandria Real Estate Equities` <dttm>, `Alexion Pharmaceuticals` <dttm>, `Align Technology` <dttm>, `Allergan plc` <dttm>, `Alliance Data Systems Corporation` <dttm>,
# `Alliant Energy Corporation` <dttm>, `Allstate Corporation` <dttm>, `Alphabet Inc` <dttm>, `Altria Group` <dttm>, Amazoncom <dttm>, `Ameren Corporation` <dttm>, `American Airlines Group` <dttm>, `American Electric Power
# Company` <dttm>, `American Express Company` <dttm>, `American International Group` <dttm>, `American Tower Corporation REIT` <dttm>, `American Water Works` <dttm>, `AMERIPRISE FINANCIAL SERVICES` <dttm>, `AmerisourceBergen
# Corporation Holding` <dttm>, `Amgen Inc` <dttm>, `Amphenol Corporation` <dttm>, AMTEK <dttm>, `Anadarko Petroleum Corporation` <dttm>, `Analog Devices` <dttm>, Andeavor <dttm>, ANSYS <dttm>, Anthem <dttm>, `Aon plc` <dttm>, `Apache
# Corporation` <dttm>,
@student
ich hatte mit der bisherigen vorgehensweise überhaupt keine Probleme, nur durch die Größe in Excel lässt sich Open Office nicht mehr öffnen und nur deshalb kann ich keine csv Datei mehr erstellen.
@bigben
an die Leistungsfähigkeit an R verschwende ich keine Gedanken. dass passt alles.
Gibt es irgendwo ein Beispiel wie ich diese Tabellenform einlesen kann?
Alternativ bleibt mir dann nur aus einer großen Datei 15 Kleinere zu machen und diese mit cbind wieder in r zu vereinen, aber mein Stolz nagt daran...
hi, eigentlich kann man aus der Größe einer Datei nicht die Notwendigkeit einer Datenbanklösung schließen, die hat andere Funktionen.
ich hab mich mit dem Packet auseinander gesetzt, leider bin ich nicht schlau geworden:
> read_excel("SUP_USD_Vorbereitung csv_teil1.xlsx", col_names = TRUE, col_types = NULL)
# A tibble: 1,754 x 475
date SuP500_TR `3M Company` `Abbott Laboratories` `Accenture plc` `Activision Blizzard` `Acuity Brands Inc` `Adobe Systems Incorporated` `Advance Auto Parts Inc` `Advanced Micro Devices`
<dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm>
1 2010-12-28 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:00
2 2010-12-29 1899-12-31 00:01:43 1899-12-31 00:00:20 1899-12-31 00:00:55 1899-12-31 00:19:13 1899-12-31 00:09:15 1899-12-30 23:59:46 1899-12-31 00:02:20 1899-12-31 00:04:21 1899-12-30 23:58:14
3 2010-12-30 1899-12-30 23:57:53 1899-12-30 23:56:21 1899-12-31 00:04:34 1899-12-30 23:54:05 1899-12-31 00:02:18 1899-12-30 23:54:09 1899-12-30 23:41:25 1899-12-31 00:05:52 1899-12-31 00:10:42
4 2010-12-31 1899-12-30 23:59:44 1899-12-30 23:56:01 1899-12-31 00:10:18 1899-12-31 00:02:05 1899-12-30 23:45:07 1899-12-30 23:34:16 1899-12-31 00:09:54 1899-12-30 23:47:42 1899-12-31 00:07:05
5 2011-01-03 1899-12-31 00:16:22 1899-12-31 00:08:11 1899-12-30 23:57:18 1899-12-31 00:02:59 1899-12-31 00:09:16 1899-12-31 00:42:12 1899-12-31 00:23:52 1899-12-30 23:45:52 1899-12-31 00:51:04
6 2011-01-04 1899-12-30 23:58:09 1899-12-30 23:58:01 1899-12-31 00:13:34 1899-12-30 23:50:31 1899-12-31 00:01:10 1899-12-30 23:42:03 1899-12-31 00:10:08 1899-12-30 22:48:20 1899-12-31 00:51:01
7 2011-01-05 1899-12-31 00:07:24 1899-12-31 00:00:00 1899-12-31 00:00:00 1899-12-31 00:00:18 1899-12-30 23:32:26 1899-12-30 23:54:36 1899-12-31 00:32:27 1899-12-31 00:01:52 1899-12-31 00:23:00
8 2011-01-06 1899-12-30 23:57:30 1899-12-30 23:51:12 1899-12-30 23:57:02 1899-12-31 00:05:23 1899-12-30 23:56:30 1899-12-31 00:40:12 1899-12-31 00:02:15 1899-12-30 23:12:38 1899-12-30 23:24:27
9 2011-01-07 1899-12-30 23:57:21 1899-12-31 00:01:31 1899-12-31 00:05:59 1899-12-31 00:02:23 1899-12-30 23:41:13 1899-12-30 23:53:46 1899-12-30 23:49:45 1899-12-31 00:38:29 1899-12-31 00:23:12
10 2011-01-10 1899-12-30 23:58:01 1899-12-31 00:15:22 1899-12-30 23:47:12 1899-12-30 23:47:15 1899-12-30 23:44:32 1899-12-30 22:30:09 1899-12-31 00:41:21 1899-12-31 00:10:43 1899-12-31 00:58:43
# ... with 1,744 more rows, and 465 more variables: `Aetna Inc` <dttm>, `Affiliated Managers Group` <dttm>, `Aflac Incorporated` <dttm>, `Agilent Technologies` <dttm>, `Air Products and Chemicals` <dttm>, `Akamai Technologies` <dttm>,
# `Alaska Air Group` <dttm>, `Albemarle Corporation` <dttm>, `Alexandria Real Estate Equities` <dttm>, `Alexion Pharmaceuticals` <dttm>, `Align Technology` <dttm>, `Allergan plc` <dttm>, `Alliance Data Systems Corporation` <dttm>,
# `Alliant Energy Corporation` <dttm>, `Allstate Corporation` <dttm>, `Alphabet Inc` <dttm>, `Altria Group` <dttm>, Amazoncom <dttm>, `Ameren Corporation` <dttm>, `American Airlines Group` <dttm>, `American Electric Power
# Company` <dttm>, `American Express Company` <dttm>, `American International Group` <dttm>, `American Tower Corporation REIT` <dttm>, `American Water Works` <dttm>, `AMERIPRISE FINANCIAL SERVICES` <dttm>, `AmerisourceBergen
# Corporation Holding` <dttm>, `Amgen Inc` <dttm>, `Amphenol Corporation` <dttm>, AMTEK <dttm>, `Anadarko Petroleum Corporation` <dttm>, `Analog Devices` <dttm>, Andeavor <dttm>, ANSYS <dttm>, Anthem <dttm>, `Aon plc` <dttm>, `Apache
# Corporation` <dttm>,
@student
ich hatte mit der bisherigen vorgehensweise überhaupt keine Probleme, nur durch die Größe in Excel lässt sich Open Office nicht mehr öffnen und nur deshalb kann ich keine csv Datei mehr erstellen.
@bigben
an die Leistungsfähigkeit an R verschwende ich keine Gedanken. dass passt alles.
Gibt es irgendwo ein Beispiel wie ich diese Tabellenform einlesen kann?
Alternativ bleibt mir dann nur aus einer großen Datei 15 Kleinere zu machen und diese mit cbind wieder in r zu vereinen, aber mein Stolz nagt daran...
Re: Datenimport
Irgendwie erkennt read_excel alle Spalten als Datumsfelder (automatisch, da col_types = NULL).ich hab mich mit dem Packet auseinander gesetzt, leider bin ich nicht schlau geworden:
> read_excel("SUP_USD_Vorbereitung csv_teil1.xlsx", col_names = TRUE, col_types = NULL)
# A tibble: 1,754 x 475
date SuP500_TR `3M Company` `Abbott Laboratories` `Accenture plc` `Activision Blizzard` `Acuity Brands Inc` `Adobe Systems Incorporated` `Advance Auto Parts Inc` `Advanced Micro Devices`
<dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm> <dttm>
Ich würde mal versuchen, den Typ expliziz zu übergeben (col_types = c('date', rep('numeric', <ncols>)).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Datenimport
readxl, hat tatsächlich Probleme...
openxlsx scheint aber zu funktionieren....
openxlsx scheint aber zu funktionieren....
Code: Alles auswählen
## download file
tmp <- tempfile(fileext = '.xlsx')
download.file('http://forum.r-statistik.de/download/file.php?id=146', tmp)
tmp
# load into R
library(readxl)
df <- read_excel(tmp)
str(df)
## doesn't work :()
df <- read_excel(tmp, col_types = c('date', rep('numeric', 661)))
str(df)
# looks much better...
## now with openxlsx
library(openxlsx)
df <- read.xlsx(tmp)
str(df)
Trotzdem würde ich sagen, dass das Excel-Forment kein besonders gutes Format ist um Daten zu speichern.eigentlich kann man aus der Größe einer Datei nicht die Notwendigkeit einer Datenbanklösung schließen, die hat andere Funktionen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Datenimport
Wenn ich tibble lese, denke ich sofort an Flat is better than nested (aus Zen of Python).
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Datenimport
Hallo EDi,
ich quäle mich schon seit Tagen damit
zu
df <- read_excel(tmp, col_types = c('date', rep('numeric', 661)))
str(df)
# looks much better...
woher kommen die "661" und das "_", hat das bei Dir funktioniert?
ich quäle mich schon seit Tagen damit
zu
df <- read_excel(tmp, col_types = c('date', rep('numeric', 661)))
str(df)
# looks much better...
woher kommen die "661" und das "_", hat das bei Dir funktioniert?
Code: Alles auswählen
> ## download file
> tmp <- tempfile(fileext = '.xlsx')
> download.file('http://forum.r-statistik.de/download/file.php?id=146', tmp)
versuche URL 'http://forum.r-statistik.de/download/file.php?id=146'
Content type 'application/octet-stream' length 260254 bytes (254 KB)
downloaded 254 KB
> tmp
[1] "C:\\Users\\ALEXAN~1\\AppData\\Local\\Temp\\Rtmp6LNDIJ\\file11246b704547.xlsx"
> df <- read_excel(tmp, col_types = c('date', rep('numeric', 661)))
Fehler in read_fun(path = path, sheet = sheet, limits = limits, shim = shim, :
Evaluation error: error -103 with zipfile in unzGetCurrentFileInfo
.
> df
function (x, df1, df2, ncp, log = FALSE)
{
if (missing(ncp))
.Call(C_df, x, df1, df2, log)
else .Call(C_dnf, x, df1, df2, ncp, log)
}
<bytecode: 0x00000000237cf0a8>
<environment: namespace:stats>
>
>
>
>
> ## now with openxlsx
> library(openxlsx)
Fehler: package or namespace load failed for ‘openxlsx’ in inDL(x, as.logical(local), as.logical(now), ...):
kann shared object 'C:/Users/Alexander/Documents/R/win-library/3.4/openxlsx/libs/x64/openxlsx.dll' nicht laden:
maximale Zahl von DLLs erreicht...
> df <- read.xlsx(tmp)
Fehler in read.xlsx(tmp) : konnte Funktion "read.xlsx" nicht finden
> str(df)
function (x, df1, df2, ncp, log = FALSE)
Re: Datenimport
Das ist die Anzahl der spalten-1 die read_excel einliest. Bei mir funktioniert der Code.woher kommen die "661" und das "_", hat das bei Dir funktioniert?
Schonmal die openxlsx variante ausprobiert?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.