Ich habe oft mit Daten in xts
Formate, und häufig müssen sie skalieren (sagen, an einem Datum gleich 100 sein). Ich mache dies derzeit mit einer Funktion, die mit einem for-loop
funktioniert - aber das scheint nicht sehr funktional.skalieren Spalten eines XTS-Objekts
Hier ist, wie ich es jetzt tun:
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)
}
Gibt es eine clevere apply
Typ-Funktion, die der R
Weg, dies zu tun ist?
+1, cool - danke. – ricardo
Schön. Ich nahm an, 'sweep' würde nicht funktionieren, ohne' coredata (dfx [1]) 'zu verwenden, aber der interne Aufruf von' array' kümmert sich darum. –