Winsorizing одна и та же переменная для разных наборов данных - PullRequest
1 голос
/ 12 марта 2020

Я новичок в программировании на R и тестирую торговую стратегию.

У меня есть 20 различных наборов данных (data1999, data2000, ..., data2018), которые имеют одинаковые переменные.

Прямо сейчас я сталкиваюсь с некоторыми проблемами при написании циклов. Например, я хочу Winsorize переменную для каждого года в для l oop. В качестве иллюстрации я скопировал приведенный ниже код:

files <- c(data1999, data2000,data2001)
for(i in 1: length(files)) {
  eval(parse(text=files[i]))['K/BW'] <- 
    Winsorize(eval(parse(text=files[i]))['K/BW'],  minval = NULL, maxval = NULL, na.rm= TRUE, probs = c(0.05,0.95))
}

Я пробовал разные вещи, но мне, кажется, не удается построить для этого товар на l oop. Кто-нибудь может мне помочь?

Заранее спасибо. Pieter

1 Ответ

0 голосов
/ 12 марта 2020

Сначала я создам несколько случайных наборов данных, чтобы этот пример можно было воспроизвести. Я буду использовать функцию replicate для генерации 20 data.frames в списке

set.seed(60656731)

files <-
  replicate(n = 20L,
            {data.frame("Var1" = rnorm(1000), "Var2" = runif(1000), "Var3" = rexp(1000))},
            simplify = FALSE)

Я предполагаю, что вы используете функцию Winsorize из пакета DescTools .

library(DescTools)

Используйте lapply, т. Е. Применить список, чтобы применить функцию Winsorize к наборам данных. Ниже приведен новый набор data.frame с, где Var1 наборов данных были worsorized.

files_winsorized <- lapply(files, function(x) {x$Var1 <- Winsorize(x$Var1); x})

Быстрый просмотр одного из результатов:

par(mfrow = c(2, 1))
hist(files[[1]]$Var1)
hist(files_winsorized[[1]]$Var1)


summary(files[[1]]$Var1)
#>      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
#> -2.884652 -0.722562 -0.001219 -0.021644  0.611927  3.060625
summary(files_winsorized[[1]]$Var1)
#>      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
#> -1.592469 -0.722562 -0.001219 -0.021551  0.611927  1.636466

Создано в 2020-03-12 пакетом Представить (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...