Если вы решите использовать R, я думаю, что следующий способ - это go. Функция mutate_all () выполняет l oop через все столбцы и выполняет точно такую же работу. Итак, вы хотите думать, что .
становится именем каждого столбца, пока R просматривает данные. Для каждого столбца вы можете найти среднее значение с mean()
. Поскольку вы хотите разделить каждое значение в каждом столбце на его среднее значение, вы можете express представить эту идею как ~./mean(.)
. Так как я добавил имя к этой функции. R создал три новых столбца. Если вы хотите перезаписать исходные столбцы, вы можете сделать следующее: mutate_all(mydf, .funs = list(~./mean(.)))
.
library(dplyr)
mutate_all(mydf, .funs = list(index = ~./mean(.)))
median_age bachelor_rate emp_rate median_age_index bachelor_rate_index emp_rate_index
1 35.2 0.05223252 0.6185185 1.1264 0.3705394 1.0224261
2 22.5 0.40045249 0.7744094 0.7200 2.8408247 1.2801176
3 36.3 0.26750261 0.8210526 1.1616 1.8976733 1.3572199
4 36.8 0.07753825 0.5801861 1.1776 0.5500592 0.9590617
5 29.9 0.04805492 0.3593074 0.9568 0.3409034 0.5939439
6 26.8 0.00000000 0.4762367 0.8576 0.0000000 0.7872308
ДАННЫЕ
mydf <- structure(list(median_age = c(35.2, 22.5, 36.3, 36.8, 29.9, 26.8
), bachelor_rate = c(0.05223252, 0.40045249, 0.26750261, 0.07753825,
0.04805492, 0), emp_rate = c(0.6185185, 0.7744094, 0.8210526,
0.5801861, 0.3593074, 0.4762367)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))