Как нормализовать значения указанных столбцов c - PullRequest
1 голос
/ 03 мая 2020

У меня есть следующие данные:

  config class       Da1        Da2         Da3        Da4
      f1   sdf 351.54189  6.0096407 1068.465766 1323.02938
      f2   sdf 258.46798 58.7775532  136.351827   43.33182
      f3   sdf  46.18123  0.1496663    2.573316    0.00000

Я хотел бы нормализовать значения столбцов от Da1 до Da4 в зависимости от диапазона его строки. Более конкретно, нормализуемые диапазоны основаны на каждом config, например, значения 351.54189 6.0096407 1068.465766 1323.02938 являются диапазоном для f1. В этом случае максимальное значение, которое следует учитывать при расчете, составляет 1323,02938. Для этого я написал следующий скрипт:

ttemp <- function(){
  df <- read.csv("/Untitled 3.csv")
  df[,3:6] <- apply(df[,3:6],2,norm)
}

norm <- function(x, maxVal){
  min = 0
  y <- (x-min)/(maxVal-min)
  return(y)
}

Мой вопрос: как мне указать максимальное значение в каждой строке? и как я применил правильный, чтобы нормализовать значения столбцов?

1 Ответ

1 голос
/ 03 мая 2020

В функции мы можем получить значение max и передать его

ttemp <- function(){
  df <- read.csv("/Untitled 3.csv")
  # changed the MARGIN to 1 as it was not clear
  df[,3:6] <- apply(df[, 3:6], 1, function(x) norm(x, max(x, na.rm = TRUE)))
  df
  }

Или другой параметр scale

df[, 3:6] <- scale(df[,3:6])

В функции ОП , min принимается за 0

apply(df[, 3:6], 2, function(x) norm(x, max(x, na.rm = TRUE)))
#           Da1         Da2         Da3        Da4
#[1,] 1.0000000 0.102243805 1.000000000 1.00000000
#[2,] 0.7352409 1.000000000 0.127614596 0.03275197
#[3,] 0.1313676 0.002546317 0.002408422 0.00000000

Если это строка, то измените MARGIN на 1

t(apply(df[, 3:6], 1, function(x) norm(x, max(x, na.rm = TRUE))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...