R:计算特定事件之间的时间差

2023-12-21

我有以下数据集:

df = data.frame(cbind(user_id = c(rep(1, 4), rep(2,4)),
                  complete_order = c(rep(c(1,0,0,1), 2)),
                  order_date = c('2015-01-28', '2015-01-31', '2015-02-08', '2015-02-23', '2015-01-25', '2015-01-28', '2015-02-06', '2015-02-21')))  

library(lubridate)
df$order_date = as_date(df$order_date)

user_id complete_order order_date
      1              1 2015-01-28
      1              0 2015-01-31
      1              0 2015-02-08
      1              1 2015-02-23
      2              1 2015-01-25
      2              0 2015-01-28
      2              0 2015-02-06
      2              1 2015-02-21

我正在尝试计算每个用户仅完成的订单之间的天数差异。理想的结果将如下所示:

user_id complete_order order_date complete_order_time_diff
<fctr>         <fctr>     <date>              <time>
   1              1    2015-01-28             NA days
   1              0    2015-01-31              3 days
   1              0    2015-02-08             11 days
   1              1    2015-02-23             26 days
   2              1    2015-01-25             NA days
   2              0    2015-01-28              3 days
   2              0    2015-02-06             12 days
   2              1    2015-02-21             27 days

当我尝试这个解决方案时:

library(dplyr)

df %>% 
group_by(user_id) %>%
mutate(complete_order_time_diff = order_date[complete_order==1]-lag(order_date[complete_order==1))

它返回错误:

Error: incompatible size (3), expecting 4 (the group size) or 1

对此的任何帮助都会很棒,谢谢!


try this

library(dplyr)

df %>% group_by(user_id, complete_order) %>% 
   mutate(c1 = order_date - lag(order_date)) %>% 
   group_by(user_id) %>% mutate(c2 = order_date - lag(order_date)) %>% ungroup %>% 
   mutate(complete_order_time_diff = ifelse(complete_order==0, c2, c1)) %>% 
   select(-c(c1, c2))

Update

对于多个已取消的订单

 df %>% mutate(c3=cumsum( complete_order != "0")) %>% group_by(user_id, complete_order) %>% 
  mutate(c1 = order_date - lag(order_date)) %>% 
  group_by(user_id) %>% mutate(c2 = order_date - lag(order_date)) %>% 
  mutate(c2=as.numeric(c2)) %>% group_by(user_id, c3) %>% 
  mutate(c2=cumsum(ifelse(complete_order==1, 0, c2))) %>% ungroup %>% 
  mutate(complete_order_time_diff = ifelse(complete_order==0, c2, c1)) %>% 
  select(-c(c1, c2, c3))

logic

c3 is an id每次有订单时(即complete_order not 0) 增加 1。

c1计算日差 buuser_id(但对于不完整的订单,结果是错误的)

c2修复了这种不一致的情况c1关于不完整的订单。

希望这能解决问题。

我建议你结合使用group_by() and mutate(cumsum())更好地理解具有多个分组变量的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:计算特定事件之间的时间差 的相关文章

  • 按日/月分组,并取 mongo 中当天/月评分的平均值

    我在 mongodb 中有这些数据 rating 4 ceatedAt ISODate 2016 08 08T15 32 41 262 0000 rating 3 createdAt ISODate 2016 08 08T15 32 41
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • PHP 使用今天的日期生成一个随机数

    我正在尝试为内容块 在网页上 分配一个随机生成的数字 该数字基于今天的日期 无论是什么 和固定数字 由于某种原因 输出的数字种类存在巨大差异 例如 当我在本地测试我的代码时 生成的数字对我来说足够好 正数 但在实际的实时服务器上时 它们通常
  • R比例置信区间因子

    我正在尝试总结家庭调查的数据 因此我的大部分数据都是分类 因子 数据 我想用对某些问题的回答频率图来总结它 例如 回答某些问题的家庭百分比的条形图 误差线显示置信区间 我发现了这个很棒的教程 我认为它是我祈祷的答案 http www coo
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • glm() 模型的交叉验证

    我正在尝试对我之前在 R 中构建的一些 glm 模型进行 10 倍交叉验证 我对cv glm 函数在boot包 尽管我已经阅读了很多帮助文件 当我提供以下公式时 library boot cv glm data glmfit K 10 这里
  • 如何将毫秒转换为天、小时、分钟

    我尝试这样做 long Plptime player getStatistic Statistic PLAY ONE TICK 50L from ticks to ms 1 tick 20 each sec by 50 gives apro
  • ggplot 中跨组的连续线

    我有一个数据时间序列 其中观察了一些数据 模拟了一些数据 我想生成整个数据系列随时间变化的图 其中颜色表示数据源 但是 我只能弄清楚如何使 ggplot 中的 geom line 连接同一组中的点 这是一个例子来说明 Create samp
  • 解释 survreg 中的威布尔参数

    我正在尝试使用从 R 中的 survreg 估计的参数生成逆威布尔分布 我的意思是 对于给定的概率 这将是在 MS Excel 中实现的小型模拟模型中的随机数 返回使用我的参数预计出现故障 的时间 我理解逆威布尔分布的一般形式是 X b l
  • 按绝对值排序

    有谁知道如何按绝对值对 R 中的向量进行排序 所以 2 3 1 gt 1 2 3 etc 如果我在 python 中这样做 我会创建一对每个值及其符号 按绝对值对对列表进行排序 然后重新应用符号 但我对 R 很陌生 所以不知道如何执行此操作
  • 如何用日语创建 ggplot2 标题?

    我正在准备日语演示文稿 并希望图像的标题和图例名称为日语 我可以让文本在 RStudio 中渲染得很好 但是当渲染图像时 日语字符仅显示为方框 x 10 10 y x x df data frame x y ggplot df aes x
  • 使用 SparkR 1.5 从 RStudio 中的 hdfs 读取大文件(纯文本、xml、json、csv)的选项

    我是 Spark 新手 想知道除了下面的选项之外是否还有其他选项可以使用 SparkR 从 RStudio 读取存储在 hdfs 中的数据 或者我是否正确使用它们 数据可以是任何类型 纯文本 csv json xml 或任何包含关系表的数据
  • 在ggplot2中创建部分虚线

    我正在 R 中创建一个图 并且需要创建一条线 其中某些值是投影 投影用虚线表示 这是代码 df data frame date c rep 2008 2013 by 1 value c 303 407 538 696 881 1094 gg
  • R:在 Shiny 中,如何修复应用于“反应性”类对象的“xtable”没有适用的方法

    我收到此错误 Error in UseMethod xtable no applicable method for xtable applied to an object of class reactive UI R library shi
  • R:在函数中包含循环?

    以下代码可用于创建一个 data frame 其中 Kendall Tau 和 Spearman 相关结果彼此相邻 data mtcars mtcars correlation lt function x y df1 cor data fr
  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 创建序列组合

    我正在尝试解决以下问题 考虑 5 个简单序列 0 100 100 0 rep 0 101 rep 50 101 rep 100 101 我需要 3 个数字变量的集合 它们的所有组合都具有上述序列 由于有 5 个序列和 3 个变量 因此可以有
  • 根据共同值对两个数据帧求和

    我有一个看起来像的数据框 day of week count 1 0 3 2 3 1 3 4 1 4 5 1 5 6 3 另一个喜欢 day of week count 1 0 17 2 1 6 3 2 1 4 3 1 5 4 5 6 5
  • 使用插入符和方法 = gamLoess 进行训练时 R 崩溃

    当我运行下面的代码时 R 崩溃了 如果我在训练调用中注释掉tuneGrid行 就不会发生崩溃 我已经用另一个数据集尝试过此操作 但仍然使 R 崩溃 崩溃消息是 R 会话中止 R遇到致命错误 会话被终止 开始新会话 代码是 library s

随机推荐

  • 我应该将解决方案和功能保持 1:1 的比例吗?

    我有一个包含多个事件接收器和工作流的复杂共享点部署 我还对现有列表进行架构更改 添加新的元数据列并更改现有列 我应该将单个功能 事件接收器或工作流程打包到单个解决方案中 还是应该将多个功能放入单个解决方案中 因为它们都可以协同工作 我问的一
  • Numpy zip 函数

    例如 如果我有两个 numpy 一维数组 x np array 1 2 3 y np array 11 22 33 如何将它们压缩到 Numpy 2D 坐标数组中 如果我做 x1 x2 x3 zip x y 结果是列表类型 而不是 Nump
  • 使用owin中间件和IdentityServer v3刷新令牌

    我最近设置了 IdentityServer v3 它的运行就像梦一样 但是我在使用 OWIN 中间件时遇到了麻烦 我想使用混合流 这样我就可以在后端刷新令牌 而无需用户重定向回 IdentityServer 来每 5 分钟获取一个新的访问令
  • 如何获取Python Pillow(PIL)版本?

    我想得到PIL https pypi python org pypi PIL安装在 Mac OS X 计算机上的 Python 成像库 版本 我之前安装过Pillow https pypi python org pypi Pillow PI
  • 无法在 java12 中创建字符串对象列表

    List al Arrays asList ABC XYZ 这段代码在 Java 11 中运行良好 但当我在 Java 12 中尝试此代码时 出现错误 我缺少什么提示吗 谢谢您的帮助 所要求的最少代码 import java util Ar
  • 将 Angular 验证指令与 Breeze 结合使用会阻止任何无效输入

    如果将任何用于验证的角度指令 ng minlength ng maxlength ng pattern 等 添加到绑定到微风实体的输入 如果发现无效 它将阻止任何用户输入 如果 ng model 中的值最初是有效的 则会显示出来 但如果将该
  • 通过 Windows cgo->gcc->ld 的 DLL 链接给出“未定义的引用(函数)”错误

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 非常详细的
  • 根据不同的概率获取数组的随机项?

    好吧 想象一下我正在用 JavaScript 创建一个 Pokemon 游戏 我有一个这样的对象 pokemon pikachu hp 100 probability 0 1 squirtle hp 90 probability 0 2 我
  • 捕获异常并重新抛出它,但这不是异常

    我偶然发现代码看起来像这样 void run try doSomething catch Exception ex System out println Error ex throw ex void doSomething throw ne
  • 为实体生成不可预测的随机@Id

    我有以下代码 因为 Id值是在我的中按顺序生成的MariaDB 它不安全 我需要在客户端中公开它 这就是为什么我想要一个不可预测的随机数 Id 我应该如何更改代码 Entity public class Item implements Se
  • 根据之前的下拉值填充第三个菜单

    我有三个下拉菜单 前两个工作正常 第三个让我同样头疼 由于某种原因 一旦第二个下拉值发生更改 它就会丢失第一个菜单的值 这是代码
  • 如何使用 Android 应用程序运行 valgrind?

    我已经安装了 Android 版 valgrind 当我尝试用它运行 ls 时 我可以确认它正在工作 并且它工作正常 但是如何使用我想要调试的本机组件执行 Android 应用程序呢 我看了这个问题 如何使用 valgrind 启动 And
  • PyQt Drop Event 没有子类化?

    这个 python pyqt 代码按照我的预期工作 但是 我不喜欢必须对 QLineEdit 进行子类化 以便我可以检测到 QLineEdit 字段上的文件放置 我喜欢更优雅 更简单的 连接 技术 新型信号 槽处理 我用它来检测编辑字段的文
  • 设计城市、州、国家桌子的最佳方法是什么?

    我需要帮助设计我的国家 城市 州表格 我将提供表格中的示例数据 以便您可以更好地帮助我解决我的问题 这是我的国家 地区表 Country code name US United States SG Singapore GB United K
  • AMPPS 虚拟主机不起作用

    我更新 etc hosts 并测试 ping 域工作正常 我使用ampps管理工具添加域名 并验证修改如下内容
  • 如何向 docker jenkins 添加插件?

    在执行此操作时 我想使用 dockerfile 来配置将安装哪些插件 然后将其构建为单独的 jenkins plugin 映像 我该怎么做 谢谢你 关于插件有两件事 一是预装的插件 一是jenkins启动后存储已安装的插件 因此 对于预安装
  • 2010 Access - 如何在 Excel 文件中添加和使用形状

    我想在 Excel 工作表中添加形状并从 2010 Access vba 修改它们 我基于Excel 记录宏 编写的代码是 StrSheetName Menu wkbModels Sheets Add before wkbModels Sh
  • ApplicationServices(根)IServiceProvider 和注入的 IServiceProvider 有什么区别?

    我很难理解为什么在使用启动配置方法时应用服务定位器模式的行为不同IApplicationBuilder ApplicationServices代替IServiceProvider 当我使用IApplicationBuilder Applic
  • 在 Azure 搜索上上传文档后,我可以立即删除它吗?

    1 假设我使用Azure搜索API上传一个新文档 POST indexes index name docs index api version api version 2 我收到 HTTP 代码 201 的响应 文档已成功创建 3 我再次使
  • R:计算特定事件之间的时间差

    我有以下数据集 df data frame cbind user id c rep 1 4 rep 2 4 complete order c rep c 1 0 0 1 2 order date c 2015 01 28 2015 01 3