Число, разделенное само по себе, не равно 1? - PullRequest
0 голосов
/ 17 декабря 2018

Я не уверен, что мне здесь не хватает:

library(dplyr)
df1<-data.frame(n=c(1,1,1,2,1,1,2))
mutate(df1,foo=n/mean(c(n,lag(n)),na.rm=TRUE))
  n    foo
1 1 0.8125
2 1 0.8125
3 1 0.8125
4 2 1.6250
5 1 0.8125
6 1 0.8125
7 2 1.6250

Что происходит на земле?Первый ряд должен быть, в основном, 1/mean(1), то есть «1».Почему я получаю 0,8125?Что еще более странно, в моем исходном наборе данных, я получаю еще одно число - 0,608, для того же расчета.Чего мне не хватает?

1 Ответ

0 голосов
/ 17 декабря 2018

Попробуйте summarise(df1, length(c(n,lag(n)))) - длина вектора c(n,lag(n)) равна двукратному числу строк и имеет среднее значение 1.230769.

То, что вы хотите сделать, это:

mutate(df1,foo=n/rowMeans(cbind(n,lag(n)),na.rm=TRUE))

  n       foo
1 1 1.0000000
2 1 1.0000000
3 1 1.0000000
4 2 1.3333333
5 1 0.6666667
6 1 1.0000000
7 2 1.3333333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...