【问题标题】:Subdivide vector in equal bins and calculate the mean of each bin在相等的 bin 中细分向量并计算每个 bin 的平均值
【发布时间】:2015-04-16 03:12:54
【问题描述】:

我想在 $Date 的 10 个相等的 bin 中剪切以下数据集以获得相等的样本。然后计算 10 个箱中每个箱的 $Close 的平均值和标准偏差。我真的不知道该怎么做。

'data.frame':   1763 obs. of  6 variables:
 $ Date  : int  20080102 20080103 20080104 20080107 20080108 20080109 20080110 20080111 20080114 20080115 ...
 $ Open  : num  52.1 51.2 50 49.5 49.7 ...
 $ High  : num  52.3 51.5 50 50.1 49.7 ...
 $ Low   : num  50.8 50.2 48.7 48.6 47.8 ...
 $ Close : num  51 50.4 49.1 49.4 48 ...
 $ Volume: int  8053700 7753200 8501400 14031100 11721000 10971500 18732300
57219900 18554900 16955000 ...

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用cut()Date 划分为组,然后使用aggregate() 对组进行聚合。假设您的数据框名为df

    with(df, aggregate(Close,
                       by = list(Date = cut(Date, 10, include.lowest = TRUE)),
                       FUN = function(x) c(mean(x), sd(x))))
    

    这将返回一个包含三列的数据框:日期 bin、该 bin 中 Close 的平均值以及该 bin 中 Close 的标准差。

    首先将整数日期转换为 R 日期类型可能是个好主意。为此,请尝试以下操作:

    df <- transform(df, Date = as.Date(as.character(Date), "%Y%m%d"))
    

    【讨论】:

    • 我收到了这条消息:FUN = function(x) c(mean(x), sd(x)))) Error: Unexpected ')' in "FUN = function(x) c(mean(x), sd(x)))"
    • @Niels:这很奇怪——代码对我来说很好用。您能否确保所有内容都正确复制并重试?最后一个关闭括号应该是关闭with(),所以如果你省略了with(),你需要删除最后一个括号。
    • 现在可以正常使用了。但是代码不是 10 个,而是 8 个 bin。是否可以将$date 向量格式化为时间序列?
    • @Niels:再次,代码按我的预期工作;它使请求的 10 个垃圾箱。要创建时间序列,请查看?as.ts
    • 结果:with(stock_AXP, aggregate(Close, + by = list(Date = cut(Date, 10, include.lowest = TRUE)), + .... [TRUNCATED] Date x.1 x.2 1 [2.008e+07,2.0086e+07] 37.937549 9.638060 2 (2.0086e+07,2.0092e+07] 26.965357 9.190663 3 (2.0098e+07,2.0105e+07] 41.661865 2.406813 4 (2.0105e+07,2.0111e+07] 46.738000 2.503095 5 (2.0111e+07,2.0117e+07] 48.202913 2.520370 6 (2.0117e+07,2.0123e+07] 56.011600 2.765012 7 (2.0129e+07,2.0135e+07] 72.861349 7.897435 8 (2.0135e+07,2.0141e+07] 89.790714 3.137210 &gt;
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多