Как центрировать данные в R (с примерами)

Как центрировать данные в R (с примерами)

Центрировать набор данных означает вычесть среднее значение из каждого отдельного наблюдения в наборе данных.

Например, предположим, что у нас есть следующий набор данных:

Получается, что среднее значение равно 14. Таким образом, чтобы центрировать этот набор данных, мы должны вычесть 14 из каждого отдельного наблюдения:

Как центрировать данные

Обратите внимание, что среднее значение центрированного набора данных равно нулю.

В этом руководстве представлено несколько примеров того, как центрировать данные в R.

Пример 1. Центрирование значений вектора

В следующем коде показано, как использовать функцию scale() из базы R для центрирования значений в векторе:

#create vector
data <- c(4, 6, 9, 13, 14, 17, 18, 19, 19, 21)

#subtract the mean value from each observation in the vector
scale(data, scale= FALSE )

 [,1]
 [1,] -10
 [2,] -8
 [3,] -5
 [4,] -1
 [5,] 0
 [6,] 3
 [7,] 4
 [8,] 5
 [9,] 5
[10,] 7

attr(,"scaled:center")
[1] 14

Полученные значения являются центрированными значениями набора данных. Функция scale() также сообщает нам, что среднее значение набора данных равно 14.

Обратите внимание, что функция scale() по умолчанию вычитает среднее значение из каждого отдельного наблюдения, а затем делит на стандартное отклонение.

Указав scale=FALSE , мы говорим R не делить на стандартное отклонение.

Пример 2. Центрирование столбцов во фрейме данных

В следующем коде показано, как использовать функцию sapply() и функцию scale() из базы R для центрирования значений каждого столбца фрейма данных:

#create data frame
df <- data.frame(x = c(1, 4, 5, 6, 6, 8, 9),
 y = c(7, 7, 8, 8, 8, 9, 12),
 z = c(3, 3, 4, 4, 6, 7, 7))

#center each column in the data frame
df_new <- sapply(df, function (x) scale(x, scale= FALSE ))

#display data frame
df_new

 x y z
[1,] -4.5714286 -1.4285714 -1.8571429
[2,] -1.5714286 -1.4285714 -1.8571429
[3,] -0.5714286 -0.4285714 -0.8571429
[4,] 0.4285714 -0.4285714 -0.8571429
[5,] 0.4285714 -0.4285714 1.1428571
[6,] 2.4285714 0.5714286 2.1428571
[7,] 3.4285714 3.5714286 2.1428571

Мы можем проверить, что среднее значение каждого столбца в новом фрейме данных равно нулю, используя функцию colMeans() :

colMeans(df_new)

 x y z 
 2.537653e-16 -2.537653e-16 3.806479e-16

Значения показаны в экспоненциальном представлении, но каждое значение практически равно нулю.

Дополнительные ресурсы

Как усреднить по столбцам в R
Как суммировать определенные столбцы в R
Как удалить выбросы из нескольких столбцов в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.