R:计算指定时间范围内不同类别的数量

2024-01-01

这是一些虚拟数据:

  user_id       date category
       27 2016-01-01    apple
       27 2016-01-03    apple
       27 2016-01-05     pear
       27 2016-01-07     plum
       27 2016-01-10    apple
       27 2016-01-14     pear
       27 2016-01-16     plum
       11 2016-01-01    apple
       11 2016-01-03     pear
       11 2016-01-05     pear
       11 2016-01-07     pear
       11 2016-01-10    apple
       11 2016-01-14    apple
       11 2016-01-16    apple

我想计算一下对于每个user_id不同的数量categories在指定时间段内(例如过去7、14天内),包括当前订单

解决方案如下所示:

 user_id       date category distinct_7 distinct_14
      27 2016-01-01    apple          1           1
      27 2016-01-03    apple          1           1
      27 2016-01-05     pear          2           2
      27 2016-01-07     plum          3           3
      27 2016-01-10    apple          3           3
      27 2016-01-14     pear          3           3
      27 2016-01-16     plum          3           3
      11 2016-01-01    apple          1           1
      11 2016-01-03     pear          2           2
      11 2016-01-05     pear          2           2
      11 2016-01-07     pear          2           2
      11 2016-01-10    apple          2           2
      11 2016-01-14    apple          2           2
      11 2016-01-16    apple          1           2

我发过类似的问题here https://stackoverflow.com/questions/41615967/r-calculate-the-number-of-occurrences-of-a-specific-event-in-the-past-and-futur or here https://stackoverflow.com/questions/41020670/r-calculate-cumulative-sums-and-counts-since-the-last-occurrence-of-a-value,但是都没有提到计算指定时间段内的累积唯一值。非常感谢你的帮助!


我建议使用runner https://cran.r-project.org/web/packages/runner/index.html包裹。您可以在运行 Windows 时使用任何 R 函数runner功能。下面的代码获取指定输出,即过去 7 天 + 当前和过去 14 天 + 当前(当前 8 天和 15 天):

df <- read.table(
  text = "  user_id       date category
       27 2016-01-01    apple
  27 2016-01-03    apple
  27 2016-01-05     pear
  27 2016-01-07     plum
  27 2016-01-10    apple
  27 2016-01-14     pear
  27 2016-01-16     plum
  11 2016-01-01    apple
  11 2016-01-03     pear
  11 2016-01-05     pear
  11 2016-01-07     pear
  11 2016-01-10    apple
  11 2016-01-14    apple
  11 2016-01-16    apple", header = TRUE, colClasses = c("integer", "Date", "character"))



library(dplyr)
library(runner)
df %>%
  group_by(user_id) %>%
  mutate(distinct_7  = runner(category, k = 7 + 1, idx = date, 
                              f = function(x) length(unique(x))),
         distinct_14 = runner(category, k = 14 + 1, idx = date, 
                              f = function(x) length(unique(x))))

更多信息在package https://gogonzo.github.io/runner/ and function https://gogonzo.github.io/runner/reference/runner.html文档。

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

R:计算指定时间范围内不同类别的数量 的相关文章

  • R 中具有重叠样本的分割向量

    假设我有一个包含 1000 个值的向量 我想将此向量 拆分 分区 分组 为多个向量 每个向量包含 200 个值 并且它们之间有 100 个值的重叠 E g vec seq 1 1000 splitWithOverlap vec 200 10
  • 使用 R 将多个数据帧写入 .csv 文件

    我使用 lapply 将函数应用于多个数据框 data cleaned lt lapply data list shooter cleaning 然后根据主题编号 例如 100 标记列表中每个结果数据帧 names data cleaned
  • 传说在北卡罗来纳州地理地图上消失?

    我正在使用 R 编程语言 使用北卡罗来纳州的内置地图 我生成了 3 个随机变量 收入 孩子数量 体重 然后为此数据创建了地图 使用 传单 库 通过循环 library sf library mapview library leaflet l
  • data.table 对数字和文本变量分别进行分组

    我正在尝试简化这个data table作用于数字变量和字符变量的两阶段过程 例如 取第一个元素textvar and sum每个数值变量 考虑这个小例子 library data table dt lt data table grpvar
  • 有人可以解释一下这段代码吗?尤其是“函数x和[[x]]”的作用?

    这是 R 中的代码 我无法理解其作用function x and qdata x 在这行代码中 有人能给我详细解释一下吗 这段代码不是我写的 谢谢 outs lapply names qdata 12 35 function x hist
  • 如何识别数据集中其他列之和的列

    我想编写一个函数 最好用 R 语言 但也欢迎其他语言 它可以识别数据集中列之间的关系 仅限于加法 减法 其实际应用是在大型多列财务数据集上运行它 其中某些列是其他列的小计 并识别此类小计 理想情况下 我希望允许一些小的差异 例如允许舍入问题
  • R 是解释型编程语言还是编译型编程语言?

    R 是解释型编程语言还是编译型编程语言 The R FAQ https cran r project org doc FAQ R FAQ html What is R 003f说 R 的核心是一种解释型计算机语言
  • 将多个对齐的绘图放置在一页上时避免浪费空间

    我想将四个图放在一个页面上 轴标签应仅打印在最边缘 即x仅用于底部图表的轴标签 以及y仅左图的轴标签 这既适用于整个轴的名称 也适用于各个刻度线 我可以使用以下代码生成一些内容 pdf file ExampleOutput pdf widt
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • R中按字母顺序对每一行字符串进行排序

    我环顾四周 似乎找不到解决这个问题的好方法 我有一个包含行名称的列 我想按字母顺序对每一行进行排序 以便稍后可以识别具有相同名称但顺序不同的行 数据如下 names lt c John D Josh C Karl H John D Bob
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 对列表中的每个数值列表求和

    我想将值附加到 R 中河图中的标签 我有一个值列表列表 需要它来显示节点之间的流 如下所示 edges lt list A list C 10 E 5 B list C 10 C list D 13 E 7 我知道有一个函数可以减少 或求和
  • R:data.table 与 merge(aggregate()) 性能

    或者更一般地说 它是DT SD by versus merge aggregate 话不多说 这里是数据和示例 set seed 5141 size 1e6 df lt data table a rnorm size b paste0 sa
  • R Markdown / Bookdown 中的水平规则导致错误

    突然 我在 Markdown Bookdown 中编织为 PDF 时遇到错误 我的系统没有任何变化 该错误是由 水平规则 引起的 即 Markdown 中的任意位置 或 尽管两侧都有行空格 我提供了一个简单的违规示例 它不会合并成 PDF
  • 在 Ubuntu 上安装软件包需要很长时间

    我之前使用 Windows 作为操作系统 RStudio 用于 Windows 今天切换到 Ubuntu 并再次安装了 R 和 RStudio 当我尝试从 CRAN 安装一些软件包时 仅tidyverse 使用install package
  • 在ggplot2中添加边框或背景以缩放图例guide_colorbar

    我在 ggplot 图中有一个从白色到红色的颜色条 并且白色边框在白色背景上不太明显 有没有办法对图例中的刻度线进行不同的着色或在渐变比例周围添加边框 这是一个最小的例子 df lt data frame x lt rnorm 10 y l
  • 添加带有错误的弹出窗口,警告闪亮

    有什么办法可以添加一个popup 可关闭的窗口 其中包含警告或其他消息Shiny 我用来构建 Web 应用程序的 R 包 我已经寻找了一段时间但没有任何结果 虽然我不认为有任何本地可用的东西shiny 你可以尝试添加jQueryUI到您的应
  • rmarkdown 中的内部链接不起作用

    我使用 rmarkdown 来渲染 pdf 文档 现在我想在文本中添加内部链接 在帮助页面中降价 http rmarkdown rstudio com authoring pandoc markdown html links 它说内部链接定
  • 闪亮的演示文稿 (ioslides):自定义 CSS 和徽标

    我安装了以下内容 RStudio 预览版 版本 0 98 864 2014 年 5 月 24 日 knitr 和shiny 的开发版本 来自 devtools install github c yihui knitr rstudio shi
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st

随机推荐

  • 使用 AJAX 在 PHP 中发送电子邮件

    我正在尝试使用 AJAX 在简单的联系表单中以 PHP 发送电子邮件 我有以下简单表单的代码 提交按钮的 PHP 代码和 AJAX 脚本 当我尝试发送电子邮件时 它没有发送任何电子邮件 并且总是触发 AJAX 错误消息 我不太擅长 AJAX
  • 错误:对象当前正在其他地方使用。

    我开发了一个应用程序 可以从数码单反相机连续读取图像流 while liveViewExit Create a Memory Stream stream new IntPtr Get the bitmap image from the DS
  • 从 PHP 数组中删除零值

    我有一个像这样的普通数组 Array 0 gt 0 1 gt 150 2 gt 0 3 gt 100 4 gt 0 5 gt 100 6 gt 0 7 gt 100 8 gt 50 9 gt 100 10 gt 0 11 gt 100 12
  • C#中使用AppDomain动态加载和卸载dll

    在我的一个与系统诊断相关的应用程序中 相关的DLL需要在C 中动态加载和卸载 经过一番搜索 我发现单独的 DLL 无法动态加载完整的 AppDomain 所以我必须创建一个 AppDomain 并使用该 DLL 进行动态加载和卸载 但我找不
  • Font Awesome 5 图标无法与 React 一起使用(“找不到图标”错误)

    我正在尝试在我的 React 项目中使用 Font Awesome 5 Pro 我有许可证 并且我已按照API https www npmjs com package fortawesome react fontawesome尽我所能 但我
  • jQuery 获取高度和宽度

    我做了一个if函数检查宽度是否 document ready function var pic pic need to remove these in of case img element has set width and height
  • Django + PostgreSQL 连接 - 无法使用服务器端游标

    我在 PostgreSQL 中有一个存储过程 它返回一个引用游标 它的名称可以作为参数传递 Example stored procedure CREATE OR REPLACE FUNCTION example stored procedu
  • UWP 中的扩展执行

    我想为我的 UWP 应用程序使用后台任务 下面的代码是我在Windows Mobile中的后退按钮单击事件 private async void MainPage BackRequested object sender BackReques
  • 我如何使用 SVN 作为 Maven 存储库

    我正在开发具有多个依赖项的项目 大多数依赖项都可以在我们的集中 Maven 存储库中找到 我的项目包含一些仅特定于我的应用程序且在我们的 Maven 存储库中不可用的 JAR 由于某些政策 限制 我无法将该 jar 部署到我们的 Maven
  • 匹配 XPath 中的不间断空格值

    假设我有这样的 XML 结构 table tr td nbsp td tr table 我将如何指定与谓词中的节点值的比较 tr td 应该指定什么而不是 解决办法是 tr td u0160 实际的 unicode 表示方式取决于您使用的工
  • 在angularjs中为多个部分视图创建单个html视图

    我希望创建一个包含多个标签的 html 文件 这些应该作为单独的单独视图 通常保存在部分文件夹中 然后我希望在路由控制器中指定它们 现在我正在做如下 应用程序 js angular module productapp config rout
  • 如何完成这个 Google Calendar Api v3 - FreeBusy PHP - 示例?

    我想使用 google api v3 freebusy php 来查找我的三个日历的免费 freebusy 信息 但我找不到代码的正确结尾 我想访问 freebusy response 的 日历 忙 值 由于 api 参考中没有示例代码 而
  • 使用 roxygen2 时如何指定加载 S4 方法的顺序

    我已经多次遇到以下问题 假设你有两节课 classA and classB在以下文件中描述classA R the class classA This is a class A blabla section Slots describe i
  • 如何根据指针变量计算数组的大小?

    我有数组指针 内存中的数组 我可以根据数组的指针计算数组的大小吗 我实际上不知道数组在内存中的位置 我只得到指针地址 假设9001 使用该地址我必须计算数组大小 Thanks 不 您无法计算数组的大小 C 中的对象不携带类型信息 因此您必须
  • window.scrollTo 在手机中不起作用

    在我的网页的移动视图上 我可以垂直和水平方向滚动 但这始终从左上角开始 现在我想使用 window scrollTo 或类似的东西将视口设置为我的自定义位置 window scroll 似乎只适用于桌面浏览器 知道我该如何解决这个问题吗 我
  • ESLint 和 Prettier 冲突,无法为代码块禁用 Prettier

    我们的项目使用 Prettier 和 ESLint 通常它们可以很好地协同工作 但我们遇到了两者发生冲突的问题 我不知道为什么 我不知道如何修复它 并且我无法禁用该行的 prettier 因为我收到错误 我们设置的相关部分 prettier
  • Lambda 和 std::function

    我正在努力赶上 C 11 和所有出色的新功能 我有点被 lambda 困住了 这是我能够开始工作的代码 include
  • 用 javascript 替换输入

    大家好 我正在尝试将 text 输入类型替换为 password 它适用于以下代码 function replaceT obj var newO document createElement input newO setAttribute
  • 了解 C 中的函数和指针

    这是一个很简单的问题 但是下面的函数原型是什么意思呢 int square int y size t x size t 的剂量是什么意思 我知道 size t 是一种数据类型 int gt 0 但是我如何阅读它所附的 呢 它是指向 x 的内
  • R:计算指定时间范围内不同类别的数量

    这是一些虚拟数据 user id date category 27 2016 01 01 apple 27 2016 01 03 apple 27 2016 01 05 pear 27 2016 01 07 plum 27 2016 01