r - 如何为连续和非连续的日子创建索引

标签 r dataframe

我有一个大的 data.frame 结构如下:

date    torn_count  torn_dpi
31-12-2014  1   0.001
28-12-2014  3   0.003
27-12-2014  1   0.001
22-12-2014  1   0.001
21-12-2014  1   0.001
20-12-2014  1   0.001
19-12-2014  1   0.001
18-12-2014  1   0.001
17-12-2014  3   0.003
15-12-2014  2   0.002
14-12-2014  1   0.001
13-12-2014  1   0.002
11-12-2014  5   0.104
10-12-2014  3   0.003
09-12-2014  1   0.001
08-12-2014  5   0.104
01-12-2014  5   0.014
30-11-2014  2   0.002
29-11-2014  1   0.001
26-11-2014  1   0.001
25-11-2014  2   0.045
24-11-2014  2   1.83

我正在尝试添加一个在连续几天内具有相同值并且在非连续几天内增加的索引。像这样的东西:

date    torn_count  torn_dpi    index
31/12/2014  1   0.001   1
28/12/2014  3   0.003   2
27/12/2014  1   0.001   2
22/12/2014  1   0.001   3
21/12/2014  1   0.001   3
20/12/2014  1   0.001   3
19/12/2014  1   0.001   3
18/12/2014  1   0.001   3
17/12/2014  3   0.003   3
15/12/2014  2   0.002   4
14/12/2014  1   0.001   4
13/12/2014  1   0.002   4 

如能就上述问题提供任何帮助,我们将不胜感激。

最佳答案

我们可以使用data.table。我们将 'data.frame' 转换为 'data.table' (setDT(df1)),将 'date' 转换为 Date 类,获取相邻元素之间的差异,检查它是否不等于 1,然后执行 cumsum 以创建“索引”列。

library(data.table)
setDT(df1)[, index:= cumsum(c(TRUE,abs(diff(as.Date(date, '%d-%m-%Y')))!=1))]
head(df1, 12)
#          date torn_count torn_dpi index
# 1: 31-12-2014          1    0.001     1
# 2: 28-12-2014          3    0.003     2
# 3: 27-12-2014          1    0.001     2
# 4: 22-12-2014          1    0.001     3
# 5: 21-12-2014          1    0.001     3
# 6: 20-12-2014          1    0.001     3
# 7: 19-12-2014          1    0.001     3
# 8: 18-12-2014          1    0.001     3
# 9: 17-12-2014          3    0.003     3
#10: 15-12-2014          2    0.002     4
#11: 14-12-2014          1    0.001     4
#12: 13-12-2014          1    0.002     4

关于r - 如何为连续和非连续的日子创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33351341/

相关文章:

R Shiny Dashboard - 相当于navbarPage?

python - 如何从 python 数据框列中的项目列表中提取项目?

python - 映射 Pandas 数据框中的值范围

regex - 在第一个空格处分割字符串

r - 高效的 data.table 方法在给定随机数的情况下生成额外的行

r - %T>% 函数在 R 中意味着什么?

r - 嵌套列表到数据框

python - 未定义的行到列,按年和月分组

python - 如何从 Pandas 数据框中检索在其中一列末尾包含特定值的记录序列?

r - 在 R 中绘制 SVM 线性分离器