Tidyr/Dplyr:迭代计数,直到找到特定值。 “输入值 X 之前添加了多少条记录?”

问题描述 投票:0回答:1

我有一个通话日志数据集,我需要对其进行迭代计数,直到找到特定值。

这个想法正在回答“在看到这个特定值之前输入了多少条记录?”的问题。在我的真实数据中,问题将被表述为“在他们接听电话之前我们给每个人打了多少次电话?”

我的数据有 3 列:

  1. 拨打的电话号码
  2. 通话日期
  3. 对方有回答吗? (此栏是文本栏,答案可以是是、否、答录机、语音邮件等)

这里有 6 行示例数据:

 data <- data.frame(PhoneNum = c("1112223333","1112223333","1112223333","1112223334","1112223334","1112223334"),
                   Answered = c("Voice Mail", "Answering Machine", "Member Answered", "Voice Mail", "Answering Machine", "Member Answered"),
                   Date = Sys.Date() - 1:6)

我想做的是计算在会员接听电话之前每个电话号码被拨打的次数。输出希望如下所示:

data <- data.frame(PhoneNum = c("1112223333","1112223333","1112223333","1112223334","1112223334","1112223334"),
                   Answered = c("Voice Mail", "Answering Machine", "Member Answered", "Voice Mail", "Answering Machine", "Member Answered"),
                   Date = Sys.Date() - 1:6,
                   CallAttempts = c("1", "2", "3", "1", "2", "3")) %>% filter(str_detect(Answered, "Answered"))

但是,如果可以避免的话,我不想丢失所有其他行..

最好的情况是执行我在此处采样的操作并仅使用“已应答”呼叫创建新的 DF 吗?

最终我试图确定 1. 总共进行了多少次呼叫尝试,2. 其中有多少次呼叫以“印象”结束(会员知道我们公司打过电话并且他们需要给我们回电的任何方式......一些)我们的“已接听”值中的将是“错误号码”或无法为会员留言),以及 3. 每个会员在接听电话之前尝试了多少次(需要获得每次尝试的平均次数)回答)

r dplyr iteration tidyr
1个回答
0
投票
data |>
  arrange(Date) |>
  mutate(call_num = row_number(), .by = PhoneNum) |>
  filter(str_detect(Answered, "Answered"))
© www.soinside.com 2019 - 2024. All rights reserved.