【问题标题】:How to compute returns for multiple columns in R如何计算R中多列的回报
【发布时间】:2022-01-10 19:47:47
【问题描述】:

我有一个数据框,其中第 1 列包含日期,第 2 列到 180 列股票回报。我想计算所有股票的回报。我尝试过 for 循环,但找不到正确的语法。我应该使用应用功能吗?感谢您的帮助。

我的数据看起来像

date comp x comp n
01-11 price x1 price n1
02-11 price x2 price n2

公司从 x 到 n 并在第 2 列到 180 列中。对于所有这些公司,我想获得回报。因此计算(价格 2 - 价格 1)/(价格 1)。我试图通过使用 for 循环和 Delt 命令来做到这一点。但是,我不断收到错误。还有另一种方法可以做到这一点吗?例如通过创建一个新的数据框?

【问题讨论】:

  • 通常您会转轴为 3 列,日期、股票名称、股票价值,然后您将能够更轻松地循环或应用
  • 您能否发布您的数据的 sn-p,例如dput(data[1:10, 1:10])?另外,“计算”是什么意思 - 平均值、总数、日期、月份、年份?

标签: r for-loop apply


【解决方案1】:

colSums

总结 2:180 列,您可以将其存储在 data.frame 的另一列中,您可以简单地这样做:

data$totalReturn <- colSums(data[,c(seq(2,180))])

行总和

如果要按列求和,可以使用函数rowSums,例如

totalReturn <- rowSums(data[,c(seq(2,180))])

dplyr

如果一天有多个条目(行),您应该考虑使用包dplyr 和函数group_bysummarize 或函数aggregate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多