2017-08-23 2 views
0

enter image description hereNachdem ich meine Daten filtern, zeigt die Umgebung es gleiche Datengröße

Da die Probleme in diesem Bild zeigen, nachdem ich Daten zweimal filtern, die buyer_dormant und buyer_converted noch gleiche obs wie buyer_before_20161222 haben.

Die Konsole zeigte während des Filterprozesses keine Fehler an. Ich bin sehr verwirrt darüber, was passiert ist.

Als ich versuchte, Daten zu testen, um zu sehen, wo schief gelaufen ist, filterte ich order_amount==0 & 20170222<order_date<=20170522 in Tabelle buy_converted. Das Ergebnis soll kein Ergebnis sein, jedoch zurückgegeben order_amount=1.

Ich bin sehr verwirrt über meinen Zustand, ich weiß nicht, was ich vermisse.

Jeder Rat wird sehr geschätzt werden!

Antwort

0

Sind Sie sicher, dass Ihre SQL-Abfragen richtig formuliert sind? Versuchen Sie für die erste SQL-Abfrage "SELECT customer_id, order_amount, order_date FROM buyer_before_20161222 WHERE (order_amount <=0) AND (order_date BETWEEN 2016122 AND 20170222)" und sehen, ob das funktioniert.

Wenn Sie nur die customer_id für die beschriebenen Gruppen von ruhenden und konvertiert Käufer wollen, versuchen Sie den Code unten geschrieben dplyr mit:

Kunden, die vor 201.612.222 etwas gekauft:

buyer_before_2016122 <- order_table %>% 
    filter(order_amount>=1, order_date < 20161222) %>% 
    select(customer_id) 

Kunden, die didn‘ t Kaufen Sie etwas zwischen 20161222 und 20170222, gefiltert für die Kunden, die etwas vor 20161222, aka ruhenden Käufer kaufen:

buyer_dormant <- order_table %>% 
    filter(between(order_date, 20161222, 20170222), order_amount <= 0, 
    customer_id %in% buyer_before_2016122$customer_id) 

Kunden, die zwischen 20170222 und 20170522, gefiltert für ruhende Käufer gekauft, auch bekannt als umgewandelten Käufer:

buyer_converted <- order_table %>% 
    filter(between(order_date, 20170222, 20170522), order_amount >= 1, 
    customer_id %in% buyer_dormant$customer_id) 

Hoffnung, das hilft!

+0

danke für Ihre Antwort. Ich habe gerade versucht, auf deine Art und Weise neu zu schreiben, aber die Umgebung zeigte, dass buyer_dormant 0 obs hat. –

+0

Ist das nicht das gewünschte Ergebnis? Ich kann sehen, dass Sie bereits gefiltert haben, so dass 'buyer_before_20161222'' order_amount> = 1' hatte, so dass eine klare Filterung für 'order_amount <= 0 'keine Beobachtungen hinterlassen würde. Wenn dies nicht das gewünschte Ergebnis ist, denke ich, dass Sie darüber nachdenken müssen, wonach Sie filtern möchten, da der Code so aussieht, als würde er jetzt funktionieren. – aku

+0

Es ist nicht das gewünschte Ergebnis. In 'buyer_before_20161222' ist' order_amount> = 1' im Zeitraum 'order_date <20161222' eingeschränkt. Und 'order_amount <= 0 'sollte Kunden finden, die nicht in' 2016122 <= order_date <= 20170222 'basierend auf' buyer_before_20161222' gekauft haben. Also sollte es einige Daten geben, da ich einige Kunden finden kann, die diese Bedingung auf meinen CSV-Dateien erfüllen. –

Verwandte Themen