Функции, с которыми я знаком, включают масштабирование из базы R, масштабирование из ARM.
Возможно, лучшим способом было бы использовать какой-либо вариант применения, указав одну или несколько переменных для использования в качестве переменных группы.
r
standardization
centering
Майкл Бишоп
источник
источник
Ответы:
Вот возможное решение Plyr . Обратите внимание, что он опирается на базовую
transform()
функцию.(Мы можем проверить, работает ли он, как ожидалось, например,
with(subset(my.df, sex=="F" & group=="A"), scale(x))
)В основном, 2-й аргумент описывает, как «разбить» данные, 3-й аргумент - какую функцию применять к каждому чанку. Выше добавит переменную
x.std
к data.frame. Используйте,x
если вы хотите заменить исходную переменную на масштабированную.источник
источник
Вот решение data.table . Это определенно быстрее, чем plyr (актуально только для больших наборов данных). Может быть, позже я сделаю пример dplyr.
(Да, я заново открыл вопрос, который задавал много лет назад, когда был R noob;)
источник
Вы можете использовать (среди прочего)
tapply
для этого (plyr
пакет содержит множество других опций, которые могут лучше подходить для вашей конкретной ситуации):источник
Этот ответ взят из белой книги Махмуда Араи. Он имеет удобный побочный эффект, заключающийся в маркировке центрированных результатов с префиксом «C»:
источник
Вот обновленная реализация, использующая dplyr из tidyverse .
источник