我有两个数据集:sales_by_week
和top_sellers
。我正在尝试在sales_by_week
中为top_sellers
中排名前10位的项目制作数据图表。我正在使用filter
在%in%
部分挣扎。我想将数据过滤到只有10个产品ID。
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))
使用上面的代码,我收到错误Error in filter_impl(.data, dots) : comparison (4) is possible only for atomic and list types
我的数据看起来像这样
怎么做
答案 0 :(得分:1)
如果没有样本数据框,这是完全难以完成的,但我认为这应该大致有效。
top = top_sellers[top_sellers$rank <= 10, ]
sales_by_week = sales_by_week[sales_by_week$product_id %in% top$product_id, ]
看起来sales_by_week只有数字而top_products有字母,所以gsub会删除所有数字。如果这是错的,只需删除该部分。
你的行看起来像
filter(product_id %in% top$product_id)