目前是否可以在data.table中移动可变数量的行?

问题描述 投票:0回答:1

首先,我要感谢R包data.table的创建者和维护者。

我对data.table中的“班次”功能有一个简单的问题。有没有办法输入硬编码的偏移量,而不是输入例如存储的可变偏移量在专栏中?即每行的偏移量可能不同。

在当前文档中,我没有看到这个方向的任何内容。

非常感谢您的帮助。

下面的代码不起作用(显示一个矢量):

DT [,observation_Annual_Offset:= shift(观察,n = ifelse(频率==“ A(每年)”,1,ifelse(频率==“ H(半年)),2,ifelse(频率==” Q(Quarterly)“,4,ifelse(Frequency ==” M(Monthly)“,12,0))))),填充= NA,类型=” lead“)]

data.table shift
1个回答
0
投票

最好将频率存储在要参考的向量中,而不要使用多个ifelse

freq <- c("A (Annual)"=1, "H (Half-yearly)"=2, "Q (Quarterly)"=4, "M (Monthly)"=12)
DT <- data.table(Observation=rep(1:25, length(freq)), Offset=rep(names(freq), each=25))
DT[, Observation_Annual_Offset := shift(Observation, -freq[Offset[1L]]), Offset]

数据:

     Observation          Offset Observation_Annual_Offset
  1:           1      A (Annual)                         2
  2:           2      A (Annual)                         3
  3:           3      A (Annual)                         4
  4:           4      A (Annual)                         5
  5:           5      A (Annual)                         6
  6:           6      A (Annual)                         7
  7:           7      A (Annual)                         8
  8:           8      A (Annual)                         9
  9:           9      A (Annual)                        10
 10:          10      A (Annual)                        11
 11:          11      A (Annual)                        12
 12:          12      A (Annual)                        13
 13:          13      A (Annual)                        14
 14:          14      A (Annual)                        15
 15:          15      A (Annual)                        16
 16:          16      A (Annual)                        17
 17:          17      A (Annual)                        18
 18:          18      A (Annual)                        19
 19:          19      A (Annual)                        20
 20:          20      A (Annual)                        21
 21:          21      A (Annual)                        22
 22:          22      A (Annual)                        23
 23:          23      A (Annual)                        24
 24:          24      A (Annual)                        25
 25:          25      A (Annual)                        NA
 26:           1 H (Half-yearly)                         3
 27:           2 H (Half-yearly)                         4
 28:           3 H (Half-yearly)                         5
 29:           4 H (Half-yearly)                         6
 30:           5 H (Half-yearly)                         7
 31:           6 H (Half-yearly)                         8
 32:           7 H (Half-yearly)                         9
 33:           8 H (Half-yearly)                        10
 34:           9 H (Half-yearly)                        11
 35:          10 H (Half-yearly)                        12
 36:          11 H (Half-yearly)                        13
 37:          12 H (Half-yearly)                        14
 38:          13 H (Half-yearly)                        15
 39:          14 H (Half-yearly)                        16
 40:          15 H (Half-yearly)                        17
 41:          16 H (Half-yearly)                        18
 42:          17 H (Half-yearly)                        19
 43:          18 H (Half-yearly)                        20
 44:          19 H (Half-yearly)                        21
 45:          20 H (Half-yearly)                        22
 46:          21 H (Half-yearly)                        23
 47:          22 H (Half-yearly)                        24
 48:          23 H (Half-yearly)                        25
 49:          24 H (Half-yearly)                        NA
 50:          25 H (Half-yearly)                        NA
 51:           1   Q (Quarterly)                         5
 52:           2   Q (Quarterly)                         6
 53:           3   Q (Quarterly)                         7
 54:           4   Q (Quarterly)                         8
 55:           5   Q (Quarterly)                         9
 56:           6   Q (Quarterly)                        10
 57:           7   Q (Quarterly)                        11
 58:           8   Q (Quarterly)                        12
 59:           9   Q (Quarterly)                        13
 60:          10   Q (Quarterly)                        14
 61:          11   Q (Quarterly)                        15
 62:          12   Q (Quarterly)                        16
 63:          13   Q (Quarterly)                        17
 64:          14   Q (Quarterly)                        18
 65:          15   Q (Quarterly)                        19
 66:          16   Q (Quarterly)                        20
 67:          17   Q (Quarterly)                        21
 68:          18   Q (Quarterly)                        22
 69:          19   Q (Quarterly)                        23
 70:          20   Q (Quarterly)                        24
 71:          21   Q (Quarterly)                        25
 72:          22   Q (Quarterly)                        NA
 73:          23   Q (Quarterly)                        NA
 74:          24   Q (Quarterly)                        NA
 75:          25   Q (Quarterly)                        NA
 76:           1     M (Monthly)                        13
 77:           2     M (Monthly)                        14
 78:           3     M (Monthly)                        15
 79:           4     M (Monthly)                        16
 80:           5     M (Monthly)                        17
 81:           6     M (Monthly)                        18
 82:           7     M (Monthly)                        19
 83:           8     M (Monthly)                        20
 84:           9     M (Monthly)                        21
 85:          10     M (Monthly)                        22
 86:          11     M (Monthly)                        23
 87:          12     M (Monthly)                        24
 88:          13     M (Monthly)                        25
 89:          14     M (Monthly)                        NA
 90:          15     M (Monthly)                        NA
 91:          16     M (Monthly)                        NA
 92:          17     M (Monthly)                        NA
 93:          18     M (Monthly)                        NA
 94:          19     M (Monthly)                        NA
 95:          20     M (Monthly)                        NA
 96:          21     M (Monthly)                        NA
 97:          22     M (Monthly)                        NA
 98:          23     M (Monthly)                        NA
 99:          24     M (Monthly)                        NA
100:          25     M (Monthly)                        NA
     Observation          Offset Observation_Annual_Offset
© www.soinside.com 2019 - 2024. All rights reserved.