Так что я не уверен, как сформулировать этот вопрос, но это довольно просто. Я, конечно, хотел бы найти элегантный способ включить это в dplyr
-образную трубку.масштабная переменная константа в группе
Давайте предположим, что у меня есть кадр данных
set.seed(1)
dd <- data.frame(id = rep(c(1,2), c(3,5)),
x = rnorm(8),
d = rep(c(0.3, 0.5), c(3,5)))
Я хотел бы заменить d
на масштабном варианте, т.е. вместо 0,3 и 0,5, я хотел бы иметь
> as.numeric(scale(c(0.3, 0.5)))
[1] -0.7071068 0.7071068
Единственная проблема, когда я использую scale
в трубе, состоит в том, что большая группа (id = 2
) получает больше веса, а полученные значения:
> dd %>%
+ mutate(scale_d = scale(d))
id x d scale_d
1 1 -0.6264538 0.3 -1.2076147
2 1 0.1836433 0.3 -1.2076147
3 1 -0.8356286 0.3 -1.2076147
4 2 1.5952808 0.5 0.7245688
5 2 0.3295078 0.5 0.7245688
6 2 -0.8204684 0.5 0.7245688
7 2 0.4874291 0.5 0.7245688
8 2 0.7383247 0.5 0.7245688
Я чувствую, что это должна быть довольно простая проблема, так что, может быть, есть простое решение?
Как насчет 'дд $ D = шкале (дд $ г)'? – G5W