我正在尝试创建一列来标识该行是否满足两个条件。例如,我有一个与此类似的表:
> dat <- data.frame(Date = c(rep(c("2019-01-01", "2019-02-01","2019-03-01", "2019-04-01"), 4)),
+ Rep = c(rep("Mike", 4), rep("Tasha", 4), rep("Dane", 4), rep("Trish", 4)),
+ Manager = c(rep("Amber", 2), rep("Michelle", 2), rep("Debbie", 4), rep("Brian", 4), rep("Tim", 3), "Trevor"),
+ Sales = floor(runif(16, min = 0, max = 10)))
> dat
Date Rep Manager Sales
1 2019-01-01 Mike Amber 6
2 2019-02-01 Mike Amber 3
3 2019-03-01 Mike Michelle 9
4 2019-04-01 Mike Michelle 2
5 2019-01-01 Tasha Debbie 9
6 2019-02-01 Tasha Debbie 6
7 2019-03-01 Tasha Debbie 0
8 2019-04-01 Tasha Debbie 4
9 2019-01-01 Dane Brian 3
10 2019-02-01 Dane Brian 6
11 2019-03-01 Dane Brian 6
12 2019-04-01 Dane Brian 1
13 2019-01-01 Trish Tim 6
14 2019-02-01 Trish Tim 7
15 2019-03-01 Trish Tim 6
16 2019-04-01 Trish Trevor 1
在更换了经理的销售代表中,我想确定该经理是该日期的第一或第二位经理。理想的输出如下所示:
Date Rep Manager Sales New_Column
1 2019-01-01 Mike Amber 6 1
2 2019-02-01 Mike Amber 3 1
3 2019-03-01 Mike Michelle 9 2
4 2019-04-01 Mike Michelle 2 2
5 2019-01-01 Trish Tim 6 1
6 2019-02-01 Trish Tim 7 1
7 2019-03-01 Trish Tim 6 1
8 2019-04-01 Trish Trevor 1 2
我已经尝试了一些方法,但是它们还没有完全解决。我创建了两个单独的数据帧,其中一个由该Rep和关联的管理器(df1)的第一个实例组成,另一个由该Rep和关联的管理器(df2)的最后一个实例组成。我尝试过的最接近的代码是:
dat$New_Column <- ifelse(dat$Rep %in% df1$Rep & dat$Manager %in% df1$Manager, 1,
ifelse(dat$Rep %in% df2$Rep & dat$Manager %in% df2$Manager, 2, NA))
但是这被理解为两个单独的条件,而不是具有条件的条件(即,如果Mike首先出现,而Amber首先出现,则分配1而不是Mike与经理Amber一起出现分配1)。任何帮助将非常感激。谢谢!
答案 0 :(得分:1)
一种选择是,首先按“ Rep” filter
对唯一的“ Manager”数目为2的行进行分组,然后通过match
将“ Manager”与{ {1}}个“经理”元素以获取索引
unique