如何根据其他数据框中的两个条件创建列?

时间:2019-08-28 16:55:19

标签: r

我正在尝试创建一列来标识该行是否满足两个条件。例如,我有一个与此类似的表:

> 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)。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

一种选择是,首先按“ Rep” filter对唯一的“ Manager”数目为2的行进行分组,然后通过match将“ Manager”与{ {1}}个“经理”元素以获取索引

unique