首页 > 解决方案 > 如何根据月份从数据框中提取数据?

问题描述

我有一个数据框 df,其中包含日期和两个变量。我想要么提取所有 10 月至 12 月的数据,要么从数据框中删除其他月份的数据。

我已将数据放入数据框中,但目前有一整年,我只想提取想要的数据。将来我也将只提取冬季数据。我已经附加了我的数据框块,我尝试使用format()with just%m但无法让它工作。

14138 2017-09-15  4.655946e-01  0.0603515884
14139 2017-09-16  7.881137e-01  0.0479933304
14140 2017-09-17  5.018990e-01  0.0256871025
14141 2017-09-18 -1.583625e-01 -0.0040893990
14142 2017-09-19 -6.733220e-01 -0.0313100989
14143 2017-09-20 -1.225730e+00 -0.0587706331
14144 2017-09-21 -1.419133e+00 -0.0958125544
14145 2017-09-22 -1.338630e+00 -0.0902803173
14146 2017-09-23 -1.272554e+00 -0.0659170673
14147 2017-09-24 -1.132318e+00 -0.0387240370
14148 2017-09-25 -1.255414e+00 -0.0392615823
14149 2017-09-26 -1.497188e+00 -0.0438491356
14150 2017-09-27 -1.427622e+00 -0.0633879185
14151 2017-09-28 -1.051756e+00 -0.0992427127
14152 2017-09-29 -4.876309e-01 -0.1448044528
14153 2017-09-30 -6.829681e-02 -0.1749463647
14154 2017-10-01 -1.413768e-01 -0.2009916094
14155 2017-10-02  6.359742e-02 -0.1975848313
14156 2017-10-03  9.103277e-01 -0.1828581805
14157 2017-10-04  1.695776e+00 -0.1589352546
14158 2017-10-05  1.913918e+00 -0.1538234614
14159 2017-10-06  1.479714e+00 -0.1937094170
14160 2017-10-07  8.783669e-01 -0.1703790211
14161 2017-10-08  5.706581e-01 -0.1294144428
14162 2017-10-09  4.979405e-01 -0.0666569815
14163 2017-10-10  3.233477e-01  0.0072006102
14164 2017-10-11  3.057630e-01  0.0863445067
14165 2017-10-12  5.877673e-01  0.1097707831
14166 2017-10-13  1.208526e+00  0.1301967193
14167 2017-10-14  1.671705e+00  0.1728109268
14168 2017-10-15  1.810979e+00  0.2264911145
14169 2017-10-16  1.426651e+00  0.2702958315
14170 2017-10-17  1.241140e+00  0.3242637704
14171 2017-10-18  8.997498e-01  0.3879727861
14172 2017-10-19  5.594161e-01  0.4172990825
14173 2017-10-20  3.980254e-01  0.3915170864
14174 2017-10-21  2.138538e-01  0.3249736995
14175 2017-10-22  3.926440e-01  0.2224834840
14176 2017-10-23  2.268644e-01  0.0529143372
14177 2017-10-24  5.664923e-01 -0.0081443464
14178 2017-10-25  6.167520e-01  0.0312073984
14179 2017-10-26  7.751882e-02  0.0043897693
14180 2017-10-27 -5.634851e-02 -0.0726825266
14181 2017-10-28 -2.122061e-01 -0.1711305549
14182 2017-10-29 -8.500991e-01 -0.2068581639
14183 2017-10-30 -1.039685e+00 -0.2909120824
14184 2017-10-31 -3.057745e-01 -0.3933633317
14185 2017-11-01 -1.288774e-01 -0.3726346136
14186 2017-11-02 -5.608007e-03 -0.2425754386
14187 2017-11-03  4.853990e-01 -0.0503543980
14188 2017-11-04  5.822672e-01  0.0896130098
14189 2017-11-05  8.491505e-01  0.1299151006
14190 2017-11-06  1.052999e+00  0.0749888307
14191 2017-11-07  1.170470e+00  0.0287317882
14192 2017-11-08  7.919862e-01  0.0788187381
14193 2017-11-09  4.574565e-01  0.1539981316
14194 2017-11-10  4.552032e-01  0.2034393145
14195 2017-11-11 -3.621350e-01  0.2077476707
14196 2017-11-12 -8.053965e-01  0.1759558604
14197 2017-11-13 -8.307459e-01  0.1802858410
14198 2017-11-14 -9.421325e-01  0.2175529008
14199 2017-11-15 -9.880204e-01  0.2392924580
14200 2017-11-16 -7.448127e-01  0.2519253751
14201 2017-11-17 -8.081435e-01  0.2614254732
14202 2017-11-18 -1.216806e+00  0.2629971336
14203 2017-11-19 -1.122674e+00  0.3469995055
14204 2017-11-20 -1.242597e+00  0.4553094014
14205 2017-11-21 -1.294885e+00  0.5049438231
14206 2017-11-22 -9.325514e-01  0.4684133163
14207 2017-11-23 -4.632281e-01  0.4071673624
14208 2017-11-24 -9.689322e-02  0.3710270269
14209 2017-11-25  4.704467e-01  0.4126721465
14210 2017-11-26  8.682453e-01  0.3745057653
14211 2017-11-27  5.105564e-01  0.2373454931
14212 2017-11-28  4.747265e-01  0.1650783370
14213 2017-11-29  5.905379e-01  0.2632154120
14214 2017-11-30  4.083787e-01  0.3888834762
14215 2017-12-01  3.451736e-01  0.5008047592
14216 2017-12-02  5.161312e-01  0.5388177242
14217 2017-12-03  7.109279e-01  0.5515360710
14218 2017-12-04  4.458635e-01  0.5127537202
14219 2017-12-05 -3.986610e-01  0.3896493238
14220 2017-12-06 -5.968253e-01  0.1095843268
14221 2017-12-07 -1.604398e-01 -0.2455506506
14222 2017-12-08 -4.384744e-01 -0.5801038215
14223 2017-12-09 -7.255016e-01 -0.8384627087
14224 2017-12-10 -9.691828e-01 -0.9223171538
14225 2017-12-11 -1.140588e+00 -0.8177806761
14226 2017-12-12 -1.956622e-01 -0.5250998474
14227 2017-12-13 -1.083792e-01 -0.3430768534
14228 2017-12-14 -8.016345e-02 -0.3163476104
14229 2017-12-15  8.899266e-01 -0.2813253830
14230 2017-12-16  1.322833e+00 -0.2545953062
14231 2017-12-17  1.547972e+00 -0.2275373110
14232 2017-12-18  2.164907e+00 -0.3217205817
14233 2017-12-19  2.276258e+00 -0.5773412429
14234 2017-12-20  1.862291e+00 -0.7728091393
14235 2017-12-21  1.125083e+00 -0.9099696881
14236 2017-12-22  7.737118e-01 -1.2441963604
14237 2017-12-23  7.863508e-01 -1.4802661587
14238 2017-12-24  4.313111e-01 -1.4111320559
14239 2017-12-25 -8.814799e-02 -1.0024805520
14240 2017-12-26 -3.615127e-01 -0.4943077147
14241 2017-12-27 -5.011363e-01 -0.0308588186
14242 2017-12-28 -8.474088e-01  0.3717555895
14243 2017-12-29 -7.283247e-01  0.8230450219
14244 2017-12-30 -4.566981e-01  1.2495961116
14245 2017-12-31 -4.577034e-01  1.4805369230
14246 2018-01-01  1.946166e-01  1.5310004017
14247 2018-01-02  5.203149e-01  1.5384595802
14248 2018-01-03  5.024570e-02  1.4036679018
14249 2018-01-04 -7.065297e-01  1.0749574137
14250 2018-01-05 -8.741815e-01  0.7608524752
14251 2018-01-06  1.589530e-01  0.7891084646
14252 2018-01-07  8.632378e-01  1.1230358751

根据要求,课程是“日期”。

标签: rdatedataframe

解决方案


您可以使用lubridate和基础 R:

library(lubridate)
dats[month(ymd(dats$V2)) >= 10,]
# EDIT if the class of the date variable is date, it should be only
dats[month(dats$V2) >= 10,]

或完全基地没有任何日期工作:

dats[substr(dats$V2,6,7) %in% c("10","11","12"),]

有数据:

     V1         V2        V3         V4
1 14138 2017-09-15 0.4655946 0.06035159
2 14139 2017-09-16 0.7881137 0.04799333
...

推荐阅读