【问题标题】:how to add rows together every few rows in a data frame如何在数据框中每隔几行将行添加到一起
【发布时间】:2017-03-20 14:42:13
【问题描述】:

我有一个像下面这样的数据框,

  Date Bradford Leeds Exeter Carlisle Bristol
1   2012-03       58   115     36       26     141
3   2012-04      140   302    100       70     348
8   2012-05      105   238     77       55     284
12  2012-06      107   239     77       53     288
16  2012-07      142   319     99       72     368
21  2012-08      112   280     81       60     318
25  2012-09      143   325    108       70     374
30  2012-10      110   259     84       52     288
34  2012-11      107   243     81       55     266
38  2012-12      142   291     93       59     305
43  2013-01      135   264     90       51     289
47  2013-02      122   255     78       51     269
51  2013-03      138   315     97       67     350
56  2013-04      109   243     77       53     274
60  2013-05      112   225     76       53     266
64  2013-06      131   286     95       66     345
69  2013-07      106   239     78       57     284
73  2013-08      109   270     80       61     302
77  2013-09      139   301    106       66     346
82  2013-10      111   238     81       51     277
86  2013-11      102   231     78       49     261
90  2013-12      123   267     88       58     304
95  2014-01      105   241     81       51     273
99  2014-02      105   246     82       52     274
103 2014-03      127   294     96       65     352
108 2014-04      105   239     76       54     264
112 2014-05      105   225     76       52     270
116 2014-06      126   289     92       65     339
121 2014-07      103   235     76       56     277
125 2014-08      146   322     99       67     366
130 2014-09      104   239     82       50     271
134 2014-10      103   228     78       49     266
138 2014-11      123   279     95       57     313
143 2014-12       97   201     68       57     232
147 2015-01      124   224     79       51     266
151 2015-02      110   225     76       54     263
155 2015-03      152   264     95       64     342
160 2015-04      109   212     73       54     286
164 2015-05      132   272     95       66     346
169 2015-06      106   215     77       54     297
173 2015-07      105   227     80       56     282
177 2015-08      144   296    106       70     370
182 2015-09      121   228     82       59     272
186 2015-10      113   227     79       54     274
190 2015-11      146   275     94       60     323
195 2015-12      108   218     73       60     244
199 2016-01      134   283    124       69     343
204 2016-02      109   225     78       52     269
208 2016-03      107   204     74       50     257
212 2016-04      114   214     75       53     280
216 2016-05      139   271     96       66     338
221 2016-06      101   211     72       51     267
225 2016-07      132   275     94       66     348
230 2016-08      118   243     79       54     327
234 2016-09      132   230     83       52     303
238 2016-10      138   292    108       61     332
243 2016-11      106   235     74       47     248
247 2016-12       99   203     67       46     230
251 2017-01      132   297     95       61     325
256 2017-02      101   231     75       52     261
260 2017-03       51   107     37       25     129

我如何编写代码以在同一季度添加行,并使日期类似于 2014-04 以将行加在一起 ​​2014-01.2014-01 和 2014-03

会是这样的:

Date      Bradford     Leeds    Exeter   Carlisle    Bristol
2013-04   395           834       265       169        908
2013-07   
2013-10

应该有更多的数字,从 2013-04 到 2017-01

非常感谢!!

【问题讨论】:

  • 你怎么知道是同季的?
  • 我的错。我的意思是同一个季度
  • 所以你想用 (2013-01:2013-03) 的值之和覆盖2013-04 的值?没有多大意义
  • 在data.frame 中创建Year 和Quarter 列可能会有所帮助。从那里,dplyr 包中的 summarise_all 函数应该可以解决问题。

标签: r


【解决方案1】:

您可以使用 zoo 函数来获取宿舍,如下所示:

library(zoo)
library(dplyr)

as.yearmon(c("2014-01","2014-02","2014-03")) %>% as.yearqtr()
[1] "2014 Q1" "2014 Q1" "2014 Q1"

所以应用这个可以:

  • 添加一列 Quarter 以保存季度值

  • Quarter分组

  • 使用summarize_all 对所有列或使用summarize_at 在选定列中求和值


df_sums <- df %>% 
  mutate(Date=as.yearmon(Date)) %>% 
  mutate(Quarter=zoo::as.yearqtr()) %>% 
  group_by(Quarter) %>% 
  summarise_all(sum)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多