【发布时间】:2020-08-16 23:43:53
【问题描述】:
原始数据集类似于虚拟数据集,这里我根据日销售额总和创建了一个新列总销售额,并且我已经对总销售额的df基础降序排序
library(dplyr)
empid <- c(10,11,12,13,14,15) # Employee id
city <- c("Goa","Goa","Goa","Goa","Goa","Goa") # City
Day1 <- c(5,15,5,9,2,9) # Sales made on Day 1 and so on...
Day2 <- c(5,3,8,5,10,7)
Day3 <- c(3,9,6,4,8,10)
Day4 <- c(7,6,8,8,2,8)
salesdata <- data.frame(empid,city,Day1,Day2,Day3,Day4)
#str(salesdata)
salesdata<- salesdata %>% mutate(Total_Sales = rowSums(.[3:6])) ## New Column creation Total sales
salesdata <- salesdata[order(-salesdata$Total_Sales),] ## Sorting df - salesdata, basis total sales value in descending order
查看(销售数据)
问题#1 我需要将 emp id 分成两对(总共 3 对)基于从前到后的方法(根据总销售额,从最高到最低,然后依此类推),它应该看起来类似于下面的块这样“可以通过在每对上使用 group_by(Pair_number) 来执行新的一组操作(问题 2)。
在输出中期望这个
empid city Day1 Day2 Day3 Day4 Total_Sales Pair_number
15 Goa 9 7 10 8 34 P1
10 Goa 5 5 3 7 20 P1
11 Goa 15 3 9 6 33 P2
14 Goa 2 10 8 2 22 P2
12 Goa 5 8 6 8 27 P3
13 Goa 9 5 4 8 26 P3
问题#2。然后我需要在每对(p1,p2,p3)上计算销售激励“Day wise”(为每对创建 4 个新列),这就像“P1”的 Incentive-Day1(新列) - 如果emp id - 15 和 10 的销售额均大于 5(单独),然后将额外的销售额乘以 50。因此,最小标准为 5+5=10,任何大于 10 的值都是 * 乘以 50。对于第 1 天的 P1 是 9+5 = 14,额外销售价值为 4,因此第 1 天/第 1 对的激励价值为 200,否则该对将被取消当天的激励资格。
预期输出
empid city Day1 Day2 Day3 Day4 Total_Sales Pair_number Incent-Day1 Incent-Day2 Incent-Day3
15 Goa 9 7 10 8 34 P1 200 100 Disqualified
10 Goa 5 5 3 7 20 P1
11 Goa 15 3 9 6 33 P2 Disqualified Disqualified 350
14 Goa 2 10 8 2 22 P2
12 Goa 5 8 6 8 27 P3 200 150 Disqualified
13 Goa 9 5 4 8 26 P3
【问题讨论】:
标签: r dplyr data-manipulation feature-engineering labeling