Как использовать функцию scale() в r (с примерами)
Функцию Scale() в R можно использовать для масштабирования значений в векторе, матрице или фрейме данных.
Эта функция использует следующий базовый синтаксис:
scale(x, center = TRUE , scale = TRUE )
Золото:
- x : Имя объекта для масштабирования.
- center : вычитать ли среднее значение при масштабировании. По умолчанию установлено значение ИСТИНА.
- масштаб : следует ли делить на стандартное отклонение при масштабировании. По умолчанию установлено значение ИСТИНА.
Эта функция использует следующую формулу для расчета масштабированных значений:
масштабированный x = ( исходный x – x̄) / с
Золото:
- original x : Исходное значение x.
- x̄ : Образец означает
- s : стандартное отклонение выборки
Это также известно как нормализация данных, при которой каждое исходное значение просто преобразуется в z-показатель .
Следующие примеры показывают, как использовать эту функцию на практике.
Пример 1: масштабирование значений в векторе
Предположим, у нас есть следующий вектор значений в R:
#define vector of values x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9) #view mean and standard deviation of values mean(x) [1] 5 sd(x) [1] 2.738613
Следующий код показывает, как масштабировать векторные значения с помощью функции Scale() :
#scale the values of x x_scaled <- scale(x) #view scaled values x_scaled [,1] [1,] -1.4605935 [2,] -1.0954451 [3,] -0.7302967 [4,] -0.3651484 [5,] 0.0000000 [6,] 0.3651484 [7,] 0.7302967 [8,] 1.0954451 [9,] 1.4605935
Вот как рассчитывалось каждое масштабированное значение:
- Значение 1: (1 – 5) / 2,738613 = -1,46.
- Значение 2: (2 – 5) / 2,738613 = -1,09
- Значение 3: (3 – 5) / 2,738613 = -0,73
И так далее.
Обратите внимание: если мы укажем Scale=FALSE , то функция не будет делить на стандартное отклонение при масштабировании:
#scale the values of x but don't divide by standard deviation x_scaled <- scale(x, scale = FALSE ) #view scaled values x_scaled [,1] [1,] -4 [2,] -3 [3,] -2 [4,] -1 [5,] 0 [6,] 1 [7,] 2 [8,] 3 [9,] 4
Вот как рассчитывалось каждое масштабированное значение:
- Значение 1: 1 – 5 = -4
- Значение 2: 2 – 5 = -3
- Значение 3: 3 – 5 = -2
И так далее.
Пример 2. Масштабирование значений столбцов во фрейме данных
Чаще всего мы используем функцию Scale(), когда хотим масштабировать значения нескольких столбцов во фрейме данных так, чтобы каждый столбец имел среднее значение 0 и стандартное отклонение 1.
Например, предположим, что у нас есть следующий фрейм данных в R:
#create data frame df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9), y=c(10, 20, 30, 40, 50, 60, 70, 80, 90)) #view data frame df xy 1 1 10 2 2 20 3 3 30 4 4 40 5 5 50 6 6 60 7 7 70 8 8 80 9 9 90
Обратите внимание, что диапазон значений переменной y намного больше диапазона значений переменной x.
Мы можем использовать функцию Scale() для масштабирования значений в двух столбцах так, чтобы масштабированные значения x и y имели среднее значение 0 и стандартное отклонение 1:
#scale values in each column of data frame df_scaled <- scale(df) #view scaled data frame df_scaled xy [1,] -1.4605935 -1.4605935 [2,] -1.0954451 -1.0954451 [3,] -0.7302967 -0.7302967 [4,] -0.3651484 -0.3651484 [5,] 0.0000000 0.0000000 [6,] 0.3651484 0.3651484 [7,] 0.7302967 0.7302967 [8,] 1.0954451 1.0954451 [9,] 1.4605935 1.4605935
Столбцы x и y теперь имеют среднее значение 0 и стандартное отклонение 1.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в R:
Как нормализовать данные в R
Как стандартизировать данные в R
Как усреднить по столбцам в R