楼主: neversarah
10185 13

[问答] 日期数据 怎么把日数据变成周数据 [推广有奖]

11
galilee 在职认证  发表于 2014-5-22 17:32:19
hiei1321 发表于 2014-5-22 13:58
xts 先转成 时间序列,然后有周统计的函数 可以计算。
正解。
我的征途是星辰大海。

12
niony 发表于 2018-12-24 18:30:58
eview可以实现

13
felixzhao123 发表于 2018-12-25 08:38:48
  1. library(lubridate)
  2. sample_date <- ymd("2018-12-2")
  3. sample_date
  4. week_date <- floor_date(sample_date,unit = "weeks",week_start = 1)
  5. week_date
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

14
xc2156 发表于 2018-12-25 10:04:46
neversarah 发表于 2014-5-21 10:12
是日数据 变成 周  求和
我用了 ‘lubridate’ 不过周的起始日期不能设定成周日?
lubridate是用来处理各类时间、日期类型数据的,比如把字符串转换成日期型/时间型,或者在日期/时间上进行计算,比如往前roll一个月,往后roll一周

你提到的需求可以通过xts中的函数实现,但是需要将data frame先转换成xts,然后用xts::to.weekly()来实现,类似的函数还有好多,to.monthly(), to_yearly(), to_hourly()等等

另外提供一个用sql的思路,这样就不需要转换成xts了,只要在data frame里就能完成,需要调用sqldf包
  1. library(sqldf)

  2. # your df_daily with dt column and values
  3. # add a wk column
  4. df_daily$wk <- paste0(year(df_daily$dt), '-', week(df_daily$dt))

  5. # your_aggregate_function 可以sum, mean, min, max 等等
  6. df_weekly <- sqldf("select wk, your_aggregate_function(your_value)
  7.                    from df_daily
  8.                    group by wk
  9.                    order by wk")
复制代码
已有 1 人评分论坛币 热心指数 收起 理由
admin_kefu + 40 + 5 热心帮助其他会员

总评分: 论坛币 + 40  热心指数 + 5   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 17:19