首页 > 解决方案 > R中表格中的顶级特征组合

问题描述

假设我们有下表,其中包含来自数据库的不同类别。

id <- c('id1','id2','id3','id4','id5')
visit_number <- c(3, 8, 10, 7,8)
page_views<- c(35, 85, 102, 7,18)
channel <-c('Natural Search', 'Paid Search', 'Social Network', 'Paid Search', 'Social Network')
country <- c('ES','ES','NL','DE','DE')
device <- c('PC','PC','Other','PC','Other')
sex <- c('F','F','M','M','M')
age <- c('18-30','18-30','18-30','>50','<40')
product <-c('SRSX11W.MX', 'SRSX11W.MX', 'DSC-HX400V //SF-8C4', 'SLT-A58Y//Q E38', 'DSC-HX400V + LCS-U21 + SF-8C4')
producy_category <- c('audio','audio','camera','tablets','camera')
 price <- c(33.45, 82, 104.44, 72,88.45)
 # Join the variables to create a data frame
df <-data.frame(id,visit_number,page_views,channel,country,device,sex,age,product,producy_category,price)
df

我想根据国家、渠道和产品类别来计算表现最好的组合。桌子要大得多。我应该做什么样的组合来预测这个?

标签: r

解决方案


我们可以使用tidyverse函数来创建countrychannelproducy_category计算sum的所有组合price。我们可以arrange按降序排列输出以获得最佳组合。

library(tidyverse)

df %>%
  distinct(country, channel, producy_category) %>%
  do.call(crossing, .) %>%
  pmap_df(~ df %>% 
         filter(channel == ..1, country == ..2, producy_category == ..3) %>%
         group_by(channel, country, producy_category) %>%
         summarise(price = sum(price))) %>%
  arrange(desc(price)) -> result

推荐阅读