相关疑难解决方法(0)

根据日期对数据表中的前行进行计数

(很抱歉,如果这里的某些术语不适用,我来自SQL背景,而我只是进入R世界)

我有一个带有一系列按日期排序的条目的数据表。数据表中的字段之一是分组值,一个是时间值。在按组对数据进行排序(或键入键-我是R的新手,但仍然不确定之间的差异)之后,我要计算日期,对于每一行,该组中的行中有多少行在当前行之前(包括在当前时间段内)。

这是我使用Loblolly数据集尝试做的简化示例:

准备示例数据:

library(lubridate)
library(zoo)
library(data.table)
DT = as.data.table(Loblolly)
DT[,rd := Sys.time() + years(age)]
setkey(DT,Seed,rd)
Run Code Online (Sandbox Code Playgroud)

现在,我们有了一个按种子(组)和rd(我的日期列)排序的数据表。我有一个解决方案,它将以10年为间隔产生我的计数值(ct):

DT[,.ct:=mapply(function(x,y) DT[(rd>x-years(10) & rd<=x &Seed==y),.N],DT$rd,DT$Seed)]
Run Code Online (Sandbox Code Playgroud)

这将在此示例数据集中产生所需的结果:

    height age Seed                  rd  ct
 1:   3.93   3  329 2019-03-01 13:38:00   1
 2:   9.34   5  329 2021-03-01 13:38:00   2
 3:  26.08  10  329 2026-03-01 13:38:00   3
 4:  37.79  15  329 2031-03-01 13:38:00   2
 5:  48.31  20  329 2036-03-01 13:38:00   2
 6:  56.43  25  329 2041-03-01 13:38:00   2
 7:   4.12   3  327 2019-03-01 13:38:00   1
 8:   9.92   5 …
Run Code Online (Sandbox Code Playgroud)

r zoo data.table

5
推荐指数
1
解决办法
256
查看次数

标签 统计

data.table ×1

r ×1

zoo ×1