2017-08-23 5 views
0

enter image description hereje filtre mes données, l'environnement le montre même taille de données

Comme les problèmes dans ce spectacle d'image, après que je filtrer les données deux fois, le buyer_dormant et buyer_converted ont encore même obs que buyer_before_20161222.

La console n'affiche aucune erreur pendant le processus de filtrage. Donc, je suis très confus au sujet de ce qui s'est passé.

Lorsque j'ai essayé de tester les données pour voir où elles se sont mal passées, j'ai filtré order_amount==0 & 20170222<order_date<=20170522 dans le tableau buy_converted. Le résultat est supposé être sans résultat, mais il a renvoyé order_amount=1.

Je suis très confus au sujet de mon état, je ne sais pas ce qui me manque.

Tout conseil sera très apprécié!

Répondre

0

Etes-vous sûr que vos requêtes SQL sont correctement formulées? Pour la première requête sql, essayez "SELECT customer_id, order_amount, order_date FROM buyer_before_20161222 WHERE (order_amount <=0) AND (order_date BETWEEN 2016122 AND 20170222)" et voyez si cela fonctionne.

Si vous voulez juste le customer_id pour les groupes décrits de sommeil et converti acheteurs, essayez le code ci-dessous écrit en utilisant dplyr:

Les clients qui ont acheté quelque chose avant 201612222:

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

Les clients qui n » ai pas t acheter quelque chose entre 20161222 et 20170222, filtré pour les clients qui ont acheté quelque chose avant 20161222, alias acheteurs dormants:

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

Les clients qui ont acheté entre 20170222 et 20170522, pour les acheteurs filtrés dormants, alias convertis acheteurs:

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

Hope qui aide!

+0

merci pour votre réponse. J'ai juste essayé de réécrire à votre façon, mais l'environnement a montré que buyer_dormant a 0 obs. –

+0

N'est-ce pas le résultat souhaité? Je peux voir que vous avez déjà filtré de sorte que 'buyer_before_20161222' avait' order_amount> = 1', donc clairement filtrer à nouveau pour 'order_amount <= 0' ne laisserait aucune observation. Si ce n'est pas le résultat souhaité, je pense que vous devez réfléchir à ce que vous essayez de filtrer, car le code semble fonctionner maintenant. – aku

+0

Ce n'est pas le résultat souhaité. Dans 'buyer_before_20161222',' order_amount> = 1' est contraint dans la période de temps 'order_date <20161222'. Et 'order_amount <= 0' était destiné à trouver des clients qui n'ont pas acheté pendant' 2016122 <= order_date <= 20170222' basé sur 'buyer_before_20161222'. Donc, il devrait y avoir quelques données puisque je peux trouver des clients qui satisfont ces conditions sur mes fichiers csv. –