Często zajmuję się danymi w formatach xts
, a często trzeba je skalować (powiedzmy, aby były równe 100 w niektórych dniach). Obecnie robię to za pomocą funkcji, która działa przy użyciu for-loop
- jednak to nie wydaje się być bardzo funkcjonalne.kolumny skali obiektu xts
Oto jak zrobić to teraz:
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)
}
Czy jest jakiś sprytny apply
typu funkcja, która jest drogą R
to zrobić?
+1, super - dzięki. – ricardo
Nice. Zakładałem, że 'zamiatanie' nie zadziała bez użycia' coredata (dfx [1]) 'ale wewnętrzne wywołanie' tablica' zajmie się tym dla ciebie. –