【问题标题】:Find index of first specific result in each group from r从 r 中查找每组中第一个特定结果的索引
【发布时间】:2017-11-26 12:16:55
【问题描述】:

我有一个数据集如下: 结果与contact_date没有关系,当订阅者响应冷呼叫时,我们将其标记为成功联系尝试(1)否则(0)。计数是我们调用订阅者的次数。

 subscriber_id   outcome contact_date  queue multiple_number count
           (int)   (int)       (date) (fctr)           (int) (int)
1              1       1   2015-01-29      2               1     1
2              1       0   2015-02-21      2               1     2
3              1       0   2015-03-29      2               1     3
4              1       1   2015-04-30      2               1     4
5              2       0   2015-01-29      2               1     1
6              2       0   2015-02-21      2               1     2
7              2       0   2015-03-29      2               1     3
8              2       0   2015-04-30      2               1     4
9              2       1   2015-05-31      2               1     5
10             2       1   2015-08-25      5               1     6
11             2       0   2015-10-30      5               1     7
12             2       0   2015-12-14      5               1     8
13             3       1   2015-01-29      2               1     1

我想为每个订阅者获取第一个结果的计数 ==1,您能告诉我如何获取它吗?我想要的最终数据集是: (请注意有些可能没有任何成功调用,在这种情况下,我想将 first_success 标记为 0)

subscriber_id first_success
1                1
2                5
3                1
...

【问题讨论】:

  • 试试aggregate(df[,2],df[1],FUN=function(x) match(1,x))
  • @nicola 我认为他们有 dplyr 类之一,我猜它不会工作,因为你无法得到一个向量 - 只有一个 data.frame...
  • @DavidArenburg 我试过了,它有效。为什么不应该?
  • @nicola 我想这对我有用!谢谢!

标签: r


【解决方案1】:
require(dplyr)    

data %>% group_by(subscriber_id) %>% filter(outcome==1) %>%
slice(which.min(contact_date)) %>% data.frame() %>% 
select(subscriber_id,count)

【讨论】:

  • 当他们要求outcome == 1 时,你为什么要在contact_datesliceing?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2021-04-06
  • 2019-06-15
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
相关资源
最近更新 更多