【发布时间】:2019-08-29 00:58:43
【问题描述】:
我正在尝试创建一个列来标识该行是否满足两个条件。比如我有一个类似这样的表:
> 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) 组成,另一个由该代表的最后一个实例和关联的管理器 (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).任何帮助将非常感激。谢谢!
【问题讨论】:
标签: r