2017-10-01 4 views
0

Ich habe zwei Datensätze: sales_by_week und top_sellers. Ich versuche, ein Diagramm der Daten in sales_by_week für meine Top 10 bewerteten Artikel aus top_sellers zu machen. Ich kämpfe auf dem filter Teil mit %in%. Ich möchte die Daten auf nur 10 Produkt-IDs filtern.Wie verwende ich% in% innerhalb des Filters

sales_by_week %>% 
    filter(product_id %in% c(filter(top_sellers, rank <= 10) %>% # HOW DO I DO THIS LINE? 
    select(product_id))) %>% 
    group_by(week) %>% 
    summarize(sales_qty = sum(sales_qty)) %>% 
    ggplot(aes(x = week)) + 
    geom_line(aes(y = sales_qty, color = product_id)) 

Mit dem obigen Code, erhalte ich die Fehler Error in filter_impl(.data, dots) : comparison (4) is possible only for atomic and list types

Meine Daten wie folgt aussieht

enter image description here

enter image description here

Wie

Antwort

1

Ohne Probe Datenrahmen t Das ist ziemlich schwierig, aber ich denke, das sollte ungefähr funktionieren.

top = top_sellers[top_sellers$rank <= 10, ] 
sales_by_week = sales_by_week[sales_by_week$product_id %in% top$product_id, ] 

Es sieht aus wie sales_by_week nur Zahlen und top_products hat Buchstaben hat, so dass der gsub werden alle Zahlen entfernen. Wenn das falsch ist, löschen Sie einfach diesen Teil.

Ihre Linie wie

filter(product_id %in% top$product_id) 
+0

aussehen würde, wenn ich versuche, dass ich 'Fehler in strsplit (gsub ("[^ 0-9]", "", top $ product_id)): Argument" split "fehlt, ohne Standardwert" –

+0

'sales_by_week $ product_id' ist eigentlich Zeichendaten. Die Beispieldaten, die ich zeigte, haben nur den Wert "1457", aber die meisten Zeilen haben sowohl Buchstaben als auch Zahlen. –

+0

@BenRubin versuchen Sie den Code jetzt – Kristofersen

Verwandte Themen