В моей работе нередко есть непрерывный вектор, который нужно «дискретировать». То, что я хочу сделать, это заменить значения непрерывной переменной, которая была дискретизирована cut
со средним значением другой переменной по этим диапазонам разреза.Создайте вектор средних замещенных значений на основе другого вектора
EDIT
Кроме того, среднее (или любой другой функции я хочу использовать для генерации значения) должны быть основаны на исходных данных и применять к новым данным. Представьте себе ситуацию, когда я вычисляю средние плохие показатели для непрерывной переменной в наборе учебных данных, создаю модель и затем должен применять эту же логику преобразования к новым данным.
END EDIT
Рассмотрим следующие данные:
x <- rnorm(100)
x.disc <- cut(x, c(-Inf, -2, 0, 2, Inf))
lookup <- aggregate(x, list(x.disc), mean)
> lookup
Group.1 x
1 (-Inf,-2] -2.2322429
2 (-2,0] -0.6968720
3 (0,2] 0.8671428
4 (2, Inf] 2.6696064
То, что я хотел бы сделать, это создать новый вектор, x1, где значение равно х значения в подстановок при исходные значения x попадают в соответствующий диапазон. Мой ожидается выход вектор будет выглядеть следующим образом:
> head(x)
[1] -0.1867972 1.7309683 -0.1306331 1.2787303 0.8388222 -0.4449465
Желаемая Выход:
> head(x1)
[1] -0.6968720 0.8671428 -0.6968720 0.8671428 0.8671428 -0.6968720
В pandas
для python
есть группы по применить парадигму, которая использует transform
транслировать агрегированные значения обратно в то же измерение, что и вход. Есть ли что-то подобное для R
? Я хотел бы сохранить его в базовых функциях для моего понимания, но я не против использования других пакетов.
Вы просто хотите 'AVE (х, x.disc, FUN = среднее)'? (так что не используйте поиск) – user20650
Или может быть 'lookup $ x [match (x.disc, lookup $ Group.1)]' – akrun
да, спасибо за предложения. Я должен уточнить (и сделаю это в редактировании), что мне нужно будет применить любое преобразование, которое я придумаю для новых данных. Поэтому я должен как-то сохранить информацию о поиске, чтобы впоследствии использовать ее. – Zelazny7