Назначить дециль для каждой строки в соответствии с группой - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть фрейм данных с 10 000 наблюдений, и я хотел бы иметь новый столбец с соответствующим децилем для каждой строки.Распределение децилей должно быть сгруппировано по годам.Каков наилучший способ сделать это?

   year       value quartile
1  2000  2.55118169       NA
2  2000  0.79755259       NA
3  2000  0.16918905       NA
4  2001  1.73359245       NA
5  2001  0.41027113       NA
6  2001  0.73012966       NA
7  2002 -1.35901658       NA
8  2002 -0.80591167       NA
9  2002  0.48966739       NA
10 2003  0.88856758       NA
11 2003  0.05146856       NA
12 2003 -0.12310229       NA

Ответы [ 2 ]

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

Функция ave дает результат оценки функции путем группировки факторов (в данном случае лет).функция dplyr::ntile здесь полезна для получения децилей.

mydata$decile <- ave(mydata$value, mydata$year, FUN=function(x) { dplyr::ntile(x, 10) } )
0 голосов
/ 04 декабря 2018

Примерно так, используя dplyr, можно получить то, что вы хотите.Предполагая, что в фактическом mydata.

library(dplyr)
mydata <- mydata %>%
  group_by(year) %>%
  mutate(decile = ntile(value, 10)) %>%
  ungroup()
имеется> = 10 значений в год.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...