如何为日期间隔创建虚拟变量

时间:2019-12-12 08:59:13

标签: r sequence dummy-variable dateinterval

我一直在尝试从data列中生成一个虚拟变量作为时间间隔。 样本数据

Date <- seq(as.Date("1988-01-01"), as.Date("2018-12-31"), by="1 day") 
DATASET <- data.frame(rnorm(11323), Date) 

我想创建一个间隔:20-04:20-08,每年的代码为1。对于执行此操作的代码,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以比较一年中的某天。在基数R中应该是

DATASET$day_of_year <- as.integer(format(DATASET$Date, "%j"))
DATASET$flag <- +(with(DATASET, ifelse(as.integer(format(Date, "%Y")) %% 4 == 0 ,
                           day_of_year %in% 111:233, day_of_year %in% 110:232)))

对于leap年20-04是一年的第111天,而20-08是第233天,对于其余年份,它们分别是110和232。当日期介于这两个值之间时,我们将分配1。

答案 1 :(得分:1)

也许您可以尝试使用以下代码获取每年20-420-8之间的时间间隔的代码

DATASET <- within(DATASET,
                  code <- ave(as.numeric(format(DATASET$Date,"%m%d")),
                              as.numeric(format(DATASET$Date,"%Y")),
                              FUN = function(x) ifelse(x>=420 & x <=820,1,0)))

一小部分结果如下所示

> DATASET
    rnorm.11323.       Date code
1   -0.326546058 1988-01-01    0
2   -0.561589735 1988-01-02    0
3   -0.417091199 1988-01-03    0
4   -0.482488496 1988-01-04    0
5    0.039820482 1988-01-05    0
6   -0.285270230 1988-01-06    0
7   -1.301004464 1988-01-07    0
8    1.835118221 1988-01-08    0
9   -0.207213889 1988-01-09    0
10   1.695089989 1988-01-10    0
11  -0.618905489 1988-01-11    0
12   1.689917961 1988-01-12    0
13  -0.272349252 1988-01-13    0
14   0.585059685 1988-01-14    0
15  -0.793666725 1988-01-15    0
16  -0.276084733 1988-01-16    0
17  -0.474363507 1988-01-17    0
18   1.703568414 1988-01-18    0
19   0.011776841 1988-01-19    0
20   0.029492096 1988-01-20    0
21  -1.313446231 1988-01-21    0
22  -0.127952381 1988-01-22    0
23  -0.203861769 1988-01-23    0
24  -0.365669967 1988-01-24    0
25  -0.239937083 1988-01-25    0
26   0.620562975 1988-01-26    0
27   0.652111601 1988-01-27    0
28  -0.869191381 1988-01-28    0
29   0.130085565 1988-01-29    0
30   0.059768397 1988-01-30    0
31   0.349921562 1988-01-31    0
32  -1.087277224 1988-02-01    0
33  -1.250976040 1988-02-02    0
34  -0.970337410 1988-02-03    0
35   2.063232550 1988-02-04    0
36  -0.294777997 1988-02-05    0
37   0.535559649 1988-02-06    0
38  -0.229363577 1988-02-07    0
39  -1.819158790 1988-02-08    0
40   1.020335484 1988-02-09    0
41   0.102285275 1988-02-10    0
42   1.254992570 1988-02-11    0
43   1.584044869 1988-02-12    0
44  -0.629629933 1988-02-13    0
45  -1.073561540 1988-02-14    0
46   1.273920124 1988-02-15    0
47  -0.376367657 1988-02-16    0
48   1.331066300 1988-02-17    0
49   0.694872356 1988-02-18    0
50   0.863826292 1988-02-19    0
51  -1.411795778 1988-02-20    0
52   0.388793450 1988-02-21    0
53  -0.216112938 1988-02-22    0
54  -0.196632011 1988-02-23    0
55   0.558895841 1988-02-24    0
56   0.818765192 1988-02-25    0
57  -1.250469812 1988-02-26    0
58   0.803231988 1988-02-27    0
59   0.002634810 1988-02-28    0
60   0.252328475 1988-02-29    0
61  -0.958851197 1988-03-01    0
62  -1.448732431 1988-03-02    0
63   0.647314543 1988-03-03    0
64   0.644802476 1988-03-04    0
65  -0.087973096 1988-03-05    0
66   1.088076864 1988-03-06    0
67  -0.293465532 1988-03-07    0
68   0.141825697 1988-03-08    0
69   0.413649305 1988-03-09    0
70  -1.877052966 1988-03-10    0
71  -2.200275448 1988-03-11    0
72  -0.025524427 1988-03-12    0
73   1.236501510 1988-03-13    0
74  -0.872516837 1988-03-14    0
75  -1.063727523 1988-03-15    0
76   0.264564444 1988-03-16    0
77   0.971958801 1988-03-17    0
78   0.102470655 1988-03-18    0
79   1.369131551 1988-03-19    0
80  -0.041148284 1988-03-20    0
81  -2.476135538 1988-03-21    0
82   0.836740451 1988-03-22    0
83   0.078102241 1988-03-23    0
84  -0.949778901 1988-03-24    0
85  -0.975874102 1988-03-25    0
86   2.011305586 1988-03-26    0
87   1.441333862 1988-03-27    0
88   1.404182762 1988-03-28    0
89  -0.425158054 1988-03-29    0
90   1.250722900 1988-03-30    0
91   0.060629220 1988-03-31    0
92  -1.593162931 1988-04-01    0
93   0.475640908 1988-04-02    0
94   0.102547315 1988-04-03    0
95  -2.350611181 1988-04-04    0
96   0.185065822 1988-04-05    0
97   0.463470128 1988-04-06    0
98   1.722202344 1988-04-07    0
99  -1.344383635 1988-04-08    0
100  0.858491817 1988-04-09    0
101 -0.008338174 1988-04-10    0
102  0.572599035 1988-04-11    0
103  0.138858045 1988-04-12    0
104 -1.808541857 1988-04-13    0
105  1.308927384 1988-04-14    0
106 -2.374371017 1988-04-15    0
107  1.134519340 1988-04-16    0
108  1.604437740 1988-04-17    0
109 -0.109549779 1988-04-18    0
110 -0.011355562 1988-04-19    0
111 -1.462229758 1988-04-20    1
112  1.006583367 1988-04-21    1
113 -0.124824926 1988-04-22    1
114  1.611795681 1988-04-23    1
115  0.818715370 1988-04-24    1
116 -0.440445043 1988-04-25    1
117  0.024114452 1988-04-26    1
118 -1.418044894 1988-04-27    1
119 -0.632317886 1988-04-28    1
120  0.599948691 1988-04-29    1
121  1.055118998 1988-04-30    1
122  0.301676490 1988-05-01    1
123 -0.662547532 1988-05-02    1
124  0.425191055 1988-05-03    1
125  1.715003304 1988-05-04    1
126 -0.298346044 1988-05-05    1
127 -1.043983256 1988-05-06    1
128 -1.194283503 1988-05-07    1
129 -1.517810914 1988-05-08    1
130  0.386735460 1988-05-09    1
131  0.742102056 1988-05-10    1
132  0.953762078 1988-05-11    1
133 -0.602941007 1988-05-12    1
134  1.469329252 1988-05-13    1
135 -0.233230972 1988-05-14    1
136  0.663378860 1988-05-15    1
137 -0.749108544 1988-05-16    1
138  0.591009181 1988-05-17    1
139  0.013732152 1988-05-18    1
140 -0.774612526 1988-05-19    1
141 -1.707183964 1988-05-20    1
142 -0.808360648 1988-05-21    1
143  1.420371293 1988-05-22    1
144  0.603838459 1988-05-23    1
145  0.743964804 1988-05-24    1
146  0.059498235 1988-05-25    1
147 -0.597795793 1988-05-26    1
148  0.867167938 1988-05-27    1
149  0.441291857 1988-05-28    1
150  1.348769636 1988-05-29    1
151 -1.768938126 1988-05-30    1
152  1.070400122 1988-05-31    1
153  0.321542409 1988-06-01    1
154 -0.495030342 1988-06-02    1
155 -0.740337974 1988-06-03    1
156 -1.887552572 1988-06-04    1
157  0.805602475 1988-06-05    1
158 -0.824104379 1988-06-06    1
159  0.801460489 1988-06-07    1
160 -0.912871263 1988-06-08    1
161 -0.422677222 1988-06-09    1
162  0.126785279 1988-06-10    1
163 -0.598578319 1988-06-11    1
164 -1.535492985 1988-06-12    1
165  0.018486996 1988-06-13    1
166 -1.156209268 1988-06-14    1
167  0.656276068 1988-06-15    1
168  0.045640396 1988-06-16    1
169  0.627538985 1988-06-17    1
170  2.640792582 1988-06-18    1
171 -0.383475408 1988-06-19    1
172 -2.631633446 1988-06-20    1
173  0.772980776 1988-06-21    1
174  1.930884904 1988-06-22    1
175  2.026248604 1988-06-23    1
176 -0.134588724 1988-06-24    1
177 -0.593768442 1988-06-25    1
178 -0.427553478 1988-06-26    1
179  0.303955588 1988-06-27    1
180 -0.195481230 1988-06-28    1
181  1.231190798 1988-06-29    1
182 -0.871672993 1988-06-30    1
183 -1.002028081 1988-07-01    1
184 -0.912352588 1988-07-02    1
185 -0.714319398 1988-07-03    1
186  0.053181016 1988-07-04    1
187  0.865163557 1988-07-05    1
188  0.474865269 1988-07-06    1
189 -1.105410939 1988-07-07    1
190 -0.110529764 1988-07-08    1
191 -0.805821554 1988-07-09    1
192 -1.550774659 1988-07-10    1
193 -0.508057551 1988-07-11    1
194 -0.755394814 1988-07-12    1
195  0.993023957 1988-07-13    1
196 -0.342427853 1988-07-14    1
197 -1.481690158 1988-07-15    1
198 -0.095168751 1988-07-16    1
199  1.320208464 1988-07-17    1
200 -0.340080090 1988-07-18    1
201 -1.545902324 1988-07-19    1
202  0.389589474 1988-07-20    1
203 -0.734778233 1988-07-21    1
204  0.296933278 1988-07-22    1
205 -0.024469569 1988-07-23    1
206  1.261660247 1988-07-24    1
207 -0.136786252 1988-07-25    1
208  0.908519533 1988-07-26    1
209  1.576193030 1988-07-27    1
210  0.413044482 1988-07-28    1
211 -0.601938271 1988-07-29    1
212  0.495905040 1988-07-30    1
213  0.440665366 1988-07-31    1
214 -0.804152825 1988-08-01    1
215 -1.065705237 1988-08-02    1
216  0.149246056 1988-08-03    1
217 -0.530891226 1988-08-04    1
218 -0.879233155 1988-08-05    1
219 -0.262727374 1988-08-06    1
220 -2.244552614 1988-08-07    1
221 -1.531707789 1988-08-08    1
222  1.498847169 1988-08-09    1
223  0.810096179 1988-08-10    1
224 -1.690822775 1988-08-11    1
225  0.303456055 1988-08-12    1
226 -0.874022497 1988-08-13    1
227  0.244933676 1988-08-14    1
228  1.220193574 1988-08-15    1
229 -0.456840188 1988-08-16    1
230  1.083075786 1988-08-17    1
231 -1.769152445 1988-08-18    1
232 -1.038850200 1988-08-19    1
233  0.963345582 1988-08-20    1
234  0.036574589 1988-08-21    0
235 -2.613751531 1988-08-22    0
236  1.441930677 1988-08-23    0
237 -1.927433949 1988-08-24    0
238 -0.045661284 1988-08-25    0
239  0.974935858 1988-08-26    0
240 -1.457985965 1988-08-27    0
241  0.914085417 1988-08-28    0
242 -0.004152904 1988-08-29    0
243  1.653886738 1988-08-30    0
244  0.972947047 1988-08-31    0