Frage von Fr4gen, 39

Wie kann ich diese Daten (.csv) in 2 Wochen Körbe teilen?

Hallo, es geht um folgende Daten:

https://www.kaggle.com/c/sf-crime/download/test.csv.zip

Das sind Trainingsdaten, kommasepariert. Es sind jeweils ungerade Wochen.

Was ich erreichen möchte, ist das folgende:

Jeweils alternierend sollen die Werte in eine neue Tabelle geschrieben werden. Sodass ich am Ende zwei Tabellen habe mit den Werten aus der ursprünglichen, nur jetzt mit einem Abstand von 4 Wochen zueinander.

Jemand eine Ahnung, wie das zu realisieren sein könnte?

Danke vorab!

Expertenantwort
von Ninombre, Community-Experte für Excel, 21

Auf die Datei kommt man nur mit Passwort.

Probier mal ob das zum gewünschten Ergebnis führt:
Wenn die Daten bspw. in Spalte A stehen (A1:A18)

in B1: =INDEX(A$1:A$18;ZEILE(B1)*2;1) und runterziehen
in C1: =INDEX(A$2:A$18;ZEILE(C1)*2;1) und runter

im Grund gleiche Formel, nur die Zeile in der Matrix versetzt

Kommentar von Fr4gen ,

Hi Ninombre, schonmal danke für die Antwort.

Wegen des pw: kommst mit qwert1234 dran ;)

DIe Sache ist, dass das ca. 870000 Datensätze sind ^^ - da wird das mit dem Runteziehen ne Weile dauern *lach*

Kommentar von Oubyi ,

Alternative zum Runterziehen:
Oben links im Adressfeld (wo normalerweise die Adresse der aktiven Zelle angezeigt wird) eingeben:
B1:B870000
dann
F2 drücken
dann:
STRG & SHIFT& ENTER (gleichzeitig)
Fertig.
Bei DER Menge an Daten wird es aber sicherlich knapp mit den Resourcen und auch einige Zeit dauern.

P.S.: Wenn die Quelldaten direkt links der Formeln stehen, reicht evtl. auch ein Doppelklick auf das Ausfüllkästchen in der Ecke unten links des Zellrahmens.

Kommentar von Fr4gen ,

Hi Oubyi, wenn ich dich richtig verstehe, so ist das eine bequeme Möglichkeit, einen Adressbereich gezielt auszuwählen, richtig?

Das ist schonmal gut! Leider macht der Vorschlag von Ninombre bei mir irgendwie nichts :(

Es wird dabei ja auch nichts kopiert.... genial wäre z.B. ein Kopieren in ein neues Datenblatt derselben Datei.

Ich weiß auch nicht, ob gescheit rüber kommt, was ich denn eigentlich will.......

Viele Grüße!

Kommentar von Ninombre ,

passwort allein reicht nicht (E-Mail Adresse als User-ID)

Mit den Formeln sollten die Werte in Spalte B und C übernommen werden. Stehen die Werte bei Dir denn in Spalte A? Wenn nicht: Was hast Du angepasst an den Formeln?

Eine ganz einfache Variante wäre:
Schreib neben die Liste der Werte einfach 1 und eine Zeile drunter 0. Die beiden Zellen markieren und mit dem von Oubyi beschriebenen Doppelklick sollte das Muster 0 / 1 bis zum Ende der Daten kopiert werden. Dann kannst Du einfach mit dem Autofilter die Werte 0 bzw. 1 filtern, kopieren und an den Wunschort einfügen.

Ginge natürlich auch mit Makro, das ist unterm Strich aber nicht schneller, v.a. wenn es eine Einmal-Aktion ist.

Kommentar von Fr4gen ,

Hi, du musst es in beide Felder Eintragen als Nutzer ID und Passwort ;)

Oder hier: http://www33.zippyshare.com/v/I25TVTnn/file.html

Was du eben geschrieben hast probiere ich direkt und ergänze dann hier :)

Kommentar von Ninombre ,

Die Daten sind so aber ganz anders aufgebaut, als bisher beschrieben. Da funktionieren die Formeln natürlich nicht. Wenn es da nur um GTA oder ähnliches geht, hab ich ehrlich gesagt aber auch keine große Motivation, da weitere Lösungen auszutüfteln. Daten -> Text in Spalten. Funktion Kalenderwoche, vielleicht kommt man damit hin

Kommentar von Fr4gen ,

Hi, da fällt mir auf: So geht das nicht. Vielleicht war alternierend nicht das richtige Wort. In jede Woche fallen mehr als 1 Eintrag, also in eine Woche z.B. 10 und die nächste nur 3 und dann wieder 20. Daher kann ich das nicht von Zelle zu Zelle immer abwechselnd machen....

Kommentar von Ninombre ,

sorry, war gestern abend nicht in topstimmung... geht ja um Excel, egal wofür.

Wenn die Einträge wochenweise gruppiert werden sollen (da sind aber nicht nur ungerade Wochen enthalten!), würde ich weiterhin über den Autofilter gehen.

Da manche Einträge zerhackt sind (da stehen die Inhalte nicht nur in Spalte A, sondern auch in B) würde ich eine Zeile links einfügen, dass der Inhalt also in B steht. In B2 eine 1 schreiben und in B3

=WENN(KALENDERWOCHE(LINKS(B3;10))=KALENDERWOCHE(LINKS(B2;10));A2;WENN(A2=1;0;1))

Dann mit dem Doppelklick unten rechts die Formel bis ans Ende der Liste kopieren. Dauert etwas auf Grund der Menge.

Das gruppiert jetzt alle Einträge einer Kalenderwoche. Du kannst dann nach 0 oder 1 filtern und die Einträge irgendwo hinkopieren. Die Formel berücksichtigt aber nicht bestimmte Abstände zwischen den Wochen. Der Hinweis nur, weil Du in der Frage schreibst, es sollen 4 Wochen Abstände sein. Wenn es Kalenderwoche 10,11, 13 und 14 hinterander sind, kann man das mit zwei Spalten aber so nicht aufteilen.

Kommentar von Fr4gen ,

Hallo Ninombre,

kein Problem - immerhin bist du auf der Helferseite, da bin ich für jeden Input dankbar. :)

Nochmal zurück zu den Daten:
Auf jeden Fall ist es so, dass die ungeraden Wochen die Trainingsdaten darstellen und die geraden die Testdaten. So zumindest die Beschreibung der Anbieter der Daten (Kaggle.com)

Das mit den 4 Wochen war so zu verstehen: Die Daten in der Tabelle sind (oder sollen) ja immer im 2-Wochen Abstand, da die jeweils dazwischen liegende Woche in den Testdaten (in der anderen Tabelle ist). Wenn ich nun die vorliegende Tabelle in 2 "Körbe" einteile, so bekomme ich am Ende doch wiederum 2 neue Tabellen, in denen die Wochen mit einem Abstand von vier Wochen drin stehen. Oder habe ich hier einen Denkfehler?

Kommentar von Ninombre ,

Die Kalenderwoche kannst Du Dir einfach zu holen (ich würde aus wegen der teilweise in Spalte B stehenden Daten auf jeden Fall die Formeln in neue Spalten links davon eintragen, also neue Spalte einfügen):

=KALENDERWOCHE(LINKS(B2;10))

zumindest die ersten paar tausend Einträge sind fortlaufen, d.h. KW20, KW19, KW18 etc. Ich kann nicht erkennen, wie man zwischen Training und Test unterscheiden kann.

Wenn Du erst mal gerade und ungerade Wochen trennen willst, wäre das so möglich:
=REST(KALENDERWOCHE(LINKS(B2;10));2)

gibt 0 und 1 aus

Ich hab die Daten jetzt nicht komplett angeschaut, aber meiner Meinung nach müsste man zunächst zwischen Training und Test trennen. Im Moment scheint es absteigend Daten für jede KW zu geben. Danach kann man die Trainingsdaten nochmals alternierend aufteilen und hätte dann 4 Wochen Abstände.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten