【发布时间】:2017-09-19 10:54:04
【问题描述】:
我正在处理 r 中的时间序列,其中包含来自北欧证券交易所的每日观察结果。我只想为每个公司(列)保留一个月的最后一个日期。
我的数据框OSE 看起来像这样(但有数千行和数千列):
Date Statoil DNB
1987-09.16 0,21 1,2
1987-09.17 0,22 1,3
1987-09.18 0,15 1,1
1987-09.21 0,16 1,5
1987-09.22 0,27 1,7
1987-09.23 0,28 1,9
1987-09.24 0,30 1,6
1987-09.25 0,32 1,7
1987-09.28 0,29 1,8
1987-09.29 0,33 2,1
1987-09.30 0,34 1,9
1987-10.01 0,37 1,8
1987-10.02 0,38 2,1
1987-10.05 0,34 2,3
1987-10.06 0,28 2,4
1987-10.07 0,27 2,1
1987-10.08 0,25 2,2
1987-10.09 0,21 2,1
1987-10.12 0,31 1,9
1987-10.13 0,31 2,1
1987-10.14 0,32 2,3
1987-10.15 0,37 2,5
1987-10.16 0,41 2,6
1987-10.19 0,51 2,8
1987-10.20 0,62 3,1
1987-10.21 0,59 3,1
1987-10.22 0,58 3,5
1987-10.23 0,61 3,6
1987-10.26 0,62 3,7
1987-10.27 0,63 3,9
1987-10.28 0,57 4,0
1987-10.29 0,54 4,1
1987-10.30 0,64 4,1
1987-11.02 0,66 4,2
1987-11-03 0,67 3,9
我希望它看起来像这样:
Date Statoil DNB
1987-09.30 0,34 1,9
1987-10.30 0,64 4,1
你们对删除多余的行有什么建议吗,即不是本月最后日期的行?
非常感谢所有的帮助!
【问题讨论】:
-
“公司”栏在哪里?
library(data.table); setDT(df1)[, .SD[which.max(as.IDate(Date, "%Y-%m.%d"))] , .(month = month(as.IDate(Date, "%Y-%m.%d")), Company)] -
@akrun,我可能在这里解释得有点混乱。每个公司都有自己的专栏(Statoil 是一家,DNB 是另一家,有几千个专栏/公司)。每家公司列中的数字是收盘价(此处使用的数字只是示例)。
-
如果按月分组,为什么预期输出中没有第11个月的行
-
我们有 30 年的观察,所以我们实际上应该在操作后得到 360 行。我刚刚添加了第 9 个月和第 10 个月的每个月的最后日期作为示例。实际上,1988年的第11个月、第12个月、第1个月也应该有一行。
标签: r date delete-row