gpt4 book ai didi

r - 缩放 xts 对象的列

转载 作者:行者123 更新时间:2023-12-02 03:21:29 26 4
gpt4 key购买 nike

我经常处理 xts 格式的数据,并且经常必须缩放它们(比如在某个日期等于 100)。我目前使用一个函数来执行此操作,该函数使用 for 循环 进行工作 - 但这似乎不太实用。

这是我现在的做法:

df1 <- data.frame(rnorm(100), runif(100), 1:100*rnorm(100))
dfx <- xts(df1, order.by = seq(as.Date("2001-01-01"), by='mon', length.out=100))

dfxColScl <- function(dfrm, pos=1, idx = 100)
{
scaledDF <- dfrm
for (i in 1:ncol(dfrm)) {
scaledDF[, i] <- dfrm[,i] / as.numeric(dfrm[pos, i]) * idx
}
return(scaledDF)
}

是否有一些聪明的 apply 类型函数是 R 方法来执行此操作?

最佳答案

sweep 可用于将矩阵除以行。

dfx.scaled2 <- sweep(100*dfx, 2, dfx[1], "/")
all.equal(dfx.scaled, dfx.scaled2) # same result as @Joshua
#[1] TRUE

关于r - 缩放 xts 对象的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com