Создать функцию для нормализации столбцов с самым ранним значением, используя tidyverse? - PullRequest
0 голосов
/ 06 июля 2018

Фреймы данных, с которыми я работаю, имеют произвольное количество переменных и имеют произвольную длину. Я хотел бы создать функцию для нормализации каждого столбца по его раннему значению. Я новичок в R / tidyverse, и думал, что цикл for будет работать:

 Col.norm <- function(df){
             for (i in c(2:ncol(df))) {
             select(df,i) %>%
             mutate(df[]/df[[1]])
             }}  

Представитель df со столбцом даты и 3 переменными выглядит следующим образом:

Z <- data.frame(date = seq(as.Date("2018-06-01"), as.Date("2018-06-11"),   "days"), A = c(5:15), B = c(6:16), C= c(7:17))  

Запуск вышеуказанной функции на этом df выдает следующую ошибку:

"Ошибка в mutate_impl (.data, точки): Ошибка оценки: не числовой аргумент для двоичного оператора "

Любая помощь будет принята с благодарностью - не знаю, как выполнить цикл после выполнения шага выбора ... Я потратил кучу времени на это ...

1 Ответ

0 голосов
/ 04 ноября 2018
Col.norm <- function(df) {
  mutate_at(df, -1, funs(. / head(., 1)))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...