结合基于多个条件的观察结果

2024-01-10

目前我正在撰写硕士论文,但是,在多个条件下组合行时遇到一些问题。我在下面说明了我的问题和期望的结果。我希望你可以帮助我 :)。

这是我的数据集的示例:

df <- data.frame(
  userID = c(1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3),
  sessionID = c(1, 2, 3, 4, 5, 1, 2, 1, 2, 3, 4),
  date = as.Date(c("2019-03-15", "2019-03-18", "2019-03-19", "2019-03-21","2019-03-30", "2019-04-05", 
                   "2019-06-06", "2019-11-22", "2019-12-22", "2019-12-24", "2020-01-15"), 
                 format = "%Y-%m-%d"),
  purchase=c(0,1,0,0,0,0,0,0,0,1,0))

现在,我通过 diff 通过 dplyr 计算了差异:

library(dplyr)
df <- df %>%
  group_by(userID) %>%
  mutate(diff = date - lag(date))

但是,如果行之间的差异

我已经在 dplyr 中使用过滤器和汇总功能尝试了很多方法,但它没有给出所需的结果。另外,我真的不知道如何包含购买条件。

我想要的结果是这样的:

df2 <- data.frame(
  userID = c(1, 1, 2, 2, 3, 3, 3),
  sessionID = c("1 + 2", "3 + 4 + 5", "1", "2", "1", "2 + 3", "4"),
  date.start = as.Date(c("2019-03-15","2019-03-19", "2019-04-05", 
                   "2019-06-06", "2019-11-22", "2019-12-22", "2020-01-15"), 
                 format = "%Y-%m-%d"),
  date.end = as.Date(c("2019-03-18", "2019-03-30", "2019-04-05", "2019-06-06", 
                     "2019-11-22", "2019-12-24", "2020-01-15"), format = "%Y-%m-%d"),  
  purchase=c(1,0,0,0,0,1,0))

我希望你可以帮助我 :) 提前致谢!


按'userID'分组,根据'purchase'中出现1的情况创建一个新组,方法是对lag'购买',然后根据diff相邻“日期”值之间的差异,即检查差异是否大于或等于 10 天,进行累积和,并且summarise通过粘贴(str_c https://www.rdocumentation.org/packages/stringr/versions/1.4.0/topics/str_c),得到first'日期' 元素和last“日期”和any“购买”中的值为 1 作为摘要列

library(dplyr)
library(stringr)
df %>% 
    group_by(userID) %>%
    group_by( grp = cumsum(lag(purchase, 
        default = first(purchase))), .add = TRUE) %>%
    group_by(cat = cumsum(difftime(date, 
      lag(date, default = first(date)), units = 'day') >= 10), .add = TRUE ) %>%
    summarise(sessionID = str_c(sessionID, collapse= ' + '), 
              date.start = first(date), date.end = last(date), 
               purchase = +(any(purchase == 1)), .groups = 'drop' ) %>%
    select(-grp, -cat)

-output

# A tibble: 7 x 5
  userID sessionID date.start date.end   purchase
   <dbl> <chr>     <date>     <date>        <int>
1      1 1 + 2     2019-03-15 2019-03-18        1
2      1 3 + 4 + 5 2019-03-19 2019-03-30        0
3      2 1         2019-04-05 2019-04-05        0
4      2 2         2019-06-06 2019-06-06        0
5      3 1         2019-11-22 2019-11-22        0
6      3 2 + 3     2019-12-22 2019-12-24        1
7      3 4         2020-01-15 2020-01-15        0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结合基于多个条件的观察结果 的相关文章

  • 计算级别内的值

    我在 R 中生成了一组级别cut 例如假设 0 到 1 之间的小数值 分为 0 1 个区间 gt frac lt cut c 0 1 breaks 10 gt levels frac 1 0 001 0 1 0 1 0 2 0 2 0 3
  • 在 mts 对象上使用 Apply 系列函数

    在 mts 对象上使用 apply 或 sapply 会在发送到函数时删除其时间序列属性 我应该如何在 mts 对象中的每个时间序列上应用相同的函数 带有 ts 输入和 ts 输出 并返回它 最好是 mts 我的意思是除了使用 for 循环
  • 单击并按住 R 中的按钮闪亮?

    我希望能够通过单击 R 闪亮按钮来更改参数的值 所以我需要按钮 一个用于增加值 一个用于减少值 我想在按住按钮的同时保持值以一定的速度减少 增加 通过释放按钮的点击 动作应该停止 到目前为止我还没有找到这个选项actionButtons在
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • R - 根据另一个数据框查找每组的重叠日期

    我有一个数据框 其中包含多个雨量计的降雨测量值 如下例所示 gt rnfl ID date value 1 250 2000 03 01 5 37 2 250 2000 03 02 0 00 3 250 2000 03 03 2 94 4
  • 包检查时如何有效处理未压缩的保存?

    在最近开发一个包的过程中 我将数据集包含在data 我的包的文件夹 在我的具体情况下 我有 5 个数据集 所有这些数据集都位于data table格式 尽管我在下面描述的问题仍然存在 如果我将它们保留为data frame 我已将每个人单独
  • R比例置信区间因子

    我正在尝试总结家庭调查的数据 因此我的大部分数据都是分类 因子 数据 我想用对某些问题的回答频率图来总结它 例如 回答某些问题的家庭百分比的条形图 误差线显示置信区间 我发现了这个很棒的教程 我认为它是我祈祷的答案 http www coo
  • glm() 模型的交叉验证

    我正在尝试对我之前在 R 中构建的一些 glm 模型进行 10 倍交叉验证 我对cv glm 函数在boot包 尽管我已经阅读了很多帮助文件 当我提供以下公式时 library boot cv glm data glmfit K 10 这里
  • R 中 write.table 文件名中的变量

    请帮助我解决一个幼稚的问题 已经用谷歌搜索 并尝试了很多变体 但失败了 如何使用 R 中 write table 的文件名中的变量保存文件 脚本循环遍历 dir 中的文件 应用一些函数 然后将结果保存到具有相同名称但附加结尾的文件中 谢谢
  • 仅在具有重复块名称的另一个 Rmarkdown 文档中运行一个 Rmarkdown 文档中的代码

    我正在 Rmarkdown 中编写一系列相互补充的报告 我想将上一份报告的结果纳入我目前正在编写的报告中 我看到其他建议使用的问题purl从 Rmarkdown 文档中提取 R 代码然后运行它 所以我尝试了以下操作 r read previ
  • 解释 survreg 中的威布尔参数

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

    我正在尝试使用 R 地图库为特定国家绘制特定颜色 我可以填写颜色 但它们与各自的国家 地区没有正确关联 我想知道是否有人能知道为什么 我的数据框是 filld 有 3 列 第一列是国家名称 第二列只是一些数字数据 第三列是颜色 countr
  • R中有字典功能吗

    有没有办法在 R 中创建一个 字典 使其具有对 一些效果 x dictionary c Hi Why water c 1 5 4 x Why 5 我问这个是因为我实际上正在寻找两个分类变量函数 所以如果 x dictionary c a b
  • 使用 R 中的 tidyverse 重新调整因子和重新排序因子

    我想使用这些功能重新调平 and 重新排序 在我的数据框中 我了解重新调整级别的工作原理 但我不明白为什么我在 data frame 中看不到级别的变化 例如 假设我有鸢尾花数据集 library tidyverse head iris g
  • 使用亚毫秒日期时间从字符->POSIXct->字符准确转换

    我的文件中有一个字符日期时间列 我加载文件 到data table 并执行需要将列转换为的操作POSIXct 然后我需要写POSIXct值返回文件 但日期时间不会相同 因为打印不正确 这个打印 格式问题是众所周知的 并且已经被讨论过多次 我
  • 如何将 mcmc.list 转换为 bugs 对象?

    我正在使用rjagsR 库 功能coda samples产生一个mcmc list 例如 来自example coda samples library rjags data LINE LINE recompile LINE out lt c
  • R:如何更改ggvis闪亮应用程序中特定范围的绘图背景颜色

    I have a simple shiny app like below and you can run it The plots are created by ggvis and user can choose student name
  • 绘制带有颜色渐变的geom_segment线? (或者还有另一种方法来强调开始与结束吗?)

    我的数据框中有大量行 100 000 的两组纬度和经度变量 我正在尝试绘制一个连接这两组坐标的图 即 从纬度1 经度1 to 纬度2 经度2 使用 geom segment 使用非常低的 alpha 使线条透明 因为线条太多 我想强调这些线
  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • 使用插入符和方法 = gamLoess 进行训练时 R 崩溃

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

随机推荐

  • @grant 指令并通过页面检测用户脚本

    我的问题有两个方面 首先 有人可以解释一下使用的优点和缺点是什么 grant none在坦普尔猴子 第二 哪个 grant我应该使用哪些值来防止网页检测到脚本 grant https www tampermonkey net documen
  • rabbitmq 使用线程与 pika

    我正在尝试使用rabbitmq 获得一个基本的队列系统 但是当我尝试使用线程时 它似乎只运行1 个线程 my code import pika import threading rabbit url amqp user email prot
  • 异步委托与线程

    用异步委托 回调 替换线程 不是线程池线程 我的场景 为每个客户端生成一个 Thread del beginInvoke 据我说 Reasons 需要通过回调通知 在回调中再次调用委托 避免线程开销 委托使用线程池线程 传递参数 避免转换为
  • 无法绘制 svm 图。 terms.default(x) 中的错误:没有术语组件或属性

    我可以在我的数据集上使用 R 包 e1071 运行 svm 但我无法使用任何两个预测变量来绘制图表 即使在谷歌搜索了很多之后我也无法找到它的解决方案 请专家帮我解决这个问题 我有一个具有以下属性的数据集 gt dim fulldata 1
  • 使用 preg_match_all() 或更好的函数获取标签之间的所有文本?

    2010 June 11
  • Eclipse 代码格式化插件

    有人可以建议我一个插件来格式化 HTML 和 JAVA 代码并具有适当的缩进等吗 Eclipse 中有内置选项吗 使用源 gt 格式或 CTRL SHIFT F
  • CURLOPT_POSTFIELDS 的curl POST 格式

    当我使用curl via POST并设置CURLOPT POSTFIELD我一定要吗urlencode或者任何特殊格式 例如 如果我想发布 2 个字段 第一个和最后一个 first John last Smith 应该与curl一起使用的确
  • Objective-C 单例内存释放

    如果没有使用垃圾收集器 iPhone 环境 当我的应用程序终止时 我是否应该以某种方式释放共享对象 单例所基于的共享对象 当应用程序退出时 其所有内存都会被释放 因此 只要运行时不使用太多内存 释放对象并不重要 即使4 0策略发生变化 单个
  • 如何将逗号分隔值拆分为列

    我有一张这样的桌子 Value String 1 Cleo Smith 我想将逗号分隔的字符串分成两列 Value Name Surname 1 Cleo Smith 我只需要两个固定的额外列 您的目的可以使用以下查询来解决 Select
  • Groovy 和 Java 支持矩阵 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为了了解哪些 Java Groovy 组合可以工作 我正在寻找一个可以显示此信息的矩阵 两者都开启ht
  • redis.lpush 一些项目

    In my node js脚本我有一个字符串数组 我想要LPUSH将这些字符串放入 Redis 队列中 我试过 var redis require redis createClient redis lpush queue 1 2 3 这会导
  • MongoDB ObjectID 对于会话 ID 来说是安全的

    我正在为 Happstack 服务器制作一个会话系统 并使用 mongoDB 进行持久存储 我想知道 MongoDB ObjectID 用作会话 ID 是否安全 一般来说 MongoDB ObjectID 是全局唯一的 因此如果您担心冲突
  • 使用push_back将整数放入字符串中

    我正在尝试使用以下代码将整数放入字符串中 int x 42 string num bool negative false if x lt 0 negative true x x 1 while x gt 0 num push back x
  • 如何从 SwiftyJSON 创建对象

    我有一个代码 可以解析 JSON 的问题列表 并且可以获得每个属性 如何迭代整个文件并为每个问题创建一个对象 class ViewController UIViewController var hoge JSON override func
  • 加速 mysql 转储和导入 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AsyncWaitHandle.WaitOne 是否会阻塞 CLR 线程?或者它会创建一个 I/O 完成端口吗?

    我有这个问题 请问AsyncWaitHandle WaitOne阻塞CLR线程 或者它是否创建一个 I O 完成端口 例如 当我运行我的应用程序时 我启动一个任务 A 来初始化一些数据 当新请求到达时 我希望它们等到 A 完成 这样我就可以
  • 识别时间数据的差距

    EDIT 我找到了解决以下问题的方法 但是 它适用于小型数据集 但仍然会在大型数据集上创建错误输出 有人知道为什么吗 我找不到错误 这是代码 df continuous lt unlist lapply split df df ID fun
  • 如何在nginx中禁用http2

    due to this https openradar appspot com 26406397Safari 与 HTTP 2 和表单 POSTS 相关的问题 我想禁用通过 HTTP 2 提供一个网页的功能 所以我只是从相应的 nginx
  • 在函数式程序中获取 I/O

    所以我知道你不能在函数式程序中直接从用户那里获取输入 因为它显然不是纯粹的 但如果用户只有 4 个选项可供选择 这仍然适用吗 例如 如果你要求头发颜色 并且有四种选项可供选择 棕色 黑色 金色 红色 那么它是否仍然不纯 如果用户点击与他们的
  • 结合基于多个条件的观察结果

    目前我正在撰写硕士论文 但是 在多个条件下组合行时遇到一些问题 我在下面说明了我的问题和期望的结果 我希望你可以帮助我 这是我的数据集的示例 df lt data frame userID c 1 1 1 1 1 2 2 3 3 3 3 s