首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择每周数据并执行进一步的计算,然后将它们分组为r

如何选择每周数据并执行进一步的计算,然后将它们分组为r
EN

Stack Overflow用户
提问于 2022-10-08 09:03:40
回答 1查看 38关注 0票数 0

我有以下数据:

代码语言:javascript
复制
 Date          Price
 2-Jul-13      20
 3-Jul-13      22
 4-Jul-13      30
 5-Jul-13      18     
 8-Jul-13      12
 9-Jul-13      24
10-Jul-13      28
11-Jul-13      14

产出必须是:

代码语言:javascript
复制
  Date        Price   day_diff   week_diff
 2-Jul-13      20         0          4  
 3-Jul-13      22         2
 4-Jul-13      30         8
 5-Jul-13      18       -12
 8-Jul-13      12        -6
 9-Jul-13      24        12         -4  
10-Jul-13      28         4
11-Jul-13      14        -14 
12-Jul-13      18         4
15-Jul-13      12        -6
16-Jul-13      20         8         ....  
    ....      

要计算day_diff,第一个值为0,然后为22-20 =2,依此类推。为了计算week_diff,下一周从9-7月13日开始,所以24-20 =4,同样,下周从16-7月-13,所以20-24 = -4开始,等等.

请帮我处理这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-08 14:01:14

请提供您的数据与dput()在未来。

数据:

代码语言:javascript
复制
read.table(
  text = " Date        Price
2-Jul-13      20
3-Jul-13      22
4-Jul-13      30
5-Jul-13      18
8-Jul-13      12
9-Jul-13      24
10-Jul-13      28
11-Jul-13      14
12-Jul-13      18
15-Jul-13      12
16-Jul-13      20 ",
  header = T
) -> df

解决方案:

代码语言:javascript
复制
library(tidyverse)
library(lubridate)

df %>%
  mutate(
    Date = dmy(Date),
    day_diff = Price - lag(Price),
    week_date = floor_date(Date, unit = 'week', week_start = 2),
    week_number = ifelse(Date == week_date, Price, 0),
    week_diff = lead(week_number, 5) - week_number
  ) %>%
  select(Date, Price, day_diff, week_diff)-> output_df

输出

代码语言:javascript
复制
> output_df
         Date Price day_diff week_diff
1  2013-07-02    20       NA         4
2  2013-07-03    22        2         0
3  2013-07-04    30        8         0
4  2013-07-05    18      -12         0
5  2013-07-08    12       -6         0
6  2013-07-09    24       12        -4
7  2013-07-10    28        4        NA
8  2013-07-11    14      -14        NA
9  2013-07-12    18        4        NA
10 2013-07-15    12       -6        NA
11 2013-07-16    20        8        NA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73995694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档