r - 日期结束时对日期变量进行分组

标签 r date grouping

我正在尝试编写一个函数或使用 cut 在这些日期接近时(用户定义的关闭)将分组变量分配给某些日期数据。例如,我想为在连续日期收集的一些样本创建一个公共(public)分组变量。我原以为 cut 可以在这里工作,但后来我意识到 cut 不会在变量接近时对其进行分组,而是根据序列创建一系列组。

因此以这个数据框为例:

df <- structure(list(Num = c(0.888401849195361, 0.185766335576773, 
0.493163562379777, 0.13070688676089, 0.484760325402021, 0.603240836178884, 
0.893201333936304, 0.641203448642045, 0.16957180458121, 0.0101411847863346
), Date = structure(c(10592, 10597, 10598, 10605, 10606, 10608, 
10609, 10616, 10617, 10618), class = "Date"), day = c(1L, 6L, 
7L, 14L, 15L, 17L, 18L, 25L, 26L, 27L)), .Names = c("Num", "Date", 
"day"), row.names = c(NA, -10L), class = "data.frame")

如果按照我对它的用法的理解来应用一个 cut 函数:

df$cutVar <- cut(df$day, breaks= seq(0, 31, by = 1), right=TRUE) 

我会留下一个范围,该范围正好穿过我希望组合在一起的值。例如,第 6 和第 7 应根据彼此的接近程度分组在一起。类似于第14和第15等。

> df
          Num       Date day  cutVar
1  0.88840185 1999-01-01   1   (0,1]
2  0.18576634 1999-01-06   6   (5,6]
3  0.49316356 1999-01-07   7   (6,7]
4  0.13070689 1999-01-14  14 (13,14]
5  0.48476033 1999-01-15  15 (14,15]
6  0.60324084 1999-01-17  17 (16,17]
7  0.89320133 1999-01-18  18 (17,18]
8  0.64120345 1999-01-25  25 (24,25]
9  0.16957180 1999-01-26  26 (25,26]
10 0.01014118 1999-01-27  27 (26,27]

所以这里的基本问题是如何对连续变量(在本例中为日期)进行分组,以便将接近(由用户定义)的数字分组到一个因子范围内?

最佳答案

这是你想要的吗?其中 3 是我为方便起见选择的阈值。它可以是您喜欢的任何数字:

df$group <- cumsum(c(1, diff.Date(df$Date)) >= 3)
df
          Num       Date day group
1  0.88840185 1999-01-01   1     0
2  0.18576634 1999-01-06   6     1
3  0.49316356 1999-01-07   7     1
4  0.13070689 1999-01-14  14     2
5  0.48476033 1999-01-15  15     2
6  0.60324084 1999-01-17  17     2
7  0.89320133 1999-01-18  18     2
8  0.64120345 1999-01-25  25     3
9  0.16957180 1999-01-26  26     3
10 0.01014118 1999-01-27  27     3

关于r - 日期结束时对日期变量进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931989/

相关文章:

c++ - 获取日期、时间并解析为字符串以及其他一些信息的最快方法是什么?

python - 查找两个日期列之间的所有月份并为每个月生成行

java - 如何使用 CORDA 将类型列入白名单以进行序列化

r - 按百分位数分割向量

r - 如何在没有属性的情况下显示数据 `str()`

r - 一次分离多个包裹

r - R中的分组计算

python - 按时差算法对 Timelapses 进行分组

mysql - 复杂的sql分组排序

r - 将 rgl 3D 场景保存到 u3d(用于 .pdf 集成)