【问题标题】:Replacing the entries in a data frame in R替换R中数据框中的条目
【发布时间】:2021-07-31 21:07:38
【问题描述】:

我有一个尺寸为 100 x 54 的数据框,其中行是周末的股票值,每列代表一只股票。我想用股票的返回值替换我的数据框中的每个条目,因此将单元格的当前值除以前一个值,然后用新值替换当前值。示例:假设我有包含这些值的数据框,

table 1

我想将我的数据框操作为:

table 2

让它最终看起来像这样:

table 3

我已将其编写为我的代码,但它并不能完成这项工作。我想知道是否有人可以帮助我。

Returns99 <- NULL

for(i in 2:100){
  Returns99 <- rbind(Returns99, rep(NA, 54))
  Returns <- rbind(Returns99, (df100[i, ]/df100[i-1,]))
                   
}

其中 df100 是带有价格条目的数据框。

【问题讨论】:

  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。图片不是共享数据/代码的正确方式。

标签: r dataframe loops


【解决方案1】:

您不需要循环。与Base R

rbind(NA, df100[-1,] / df100[-nrow(df100),])

给予,

        AGG       DBC       DFE
1        NA        NA        NA
2 1.0000000 1.0000000 1.0000000
3 1.0021019 0.9739496 0.9990862
4 0.9993008 1.0008628 0.9911585

数据:

structure(list(AGG = c(99.91, 99.91, 100.12, 100.05), DBC = c(23.8, 
23.8, 23.18, 23.2), DFE = c(65.66, 65.66, 65.6, 65.02)), class = "data.frame", row.names = c(NA, 
-4L))

【讨论】:

  • 非常感谢!最初,它一直给我一个错误,但结果是我的一个专栏有 chr 类型,所以我把它改成了数字,你的建议奏效了!
  • @pamfromdundermifflin 很高兴听到这个消息。如果它解决了问题,请接受答案。您可以在这里查看详细信息:stackoverflow.com/help/someone-answers
猜你喜欢
  • 2021-04-13
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多