R как объединить годы в периоды - PullRequest
0 голосов
/ 30 апреля 2020

Я бы хотел объединить несколько лет в 5-летние. У меня есть данные с 1986 по 2016 год. В основном я хочу, чтобы период 1 состоял из 1986-1991 годов, периода 2 1992-1996 годов и так далее. Кто-нибудь есть какие-либо идеи о том, как это сделать sh

1 Ответ

1 голос
/ 30 апреля 2020

Вот подход через ifelse:

Иллюстративные данные:

set.seed(123)
df <- data.frame(
  year = sample(1986:2016, 20))

Решение:

df$period <- ifelse(df$year >= 1986 & df$year <= 1990, "period1",
                    ifelse(df$year >= 1991 & df$year <= 1995, "period2",
                           ifelse(df$year >= 1996 & df$year <= 2000, "period3",
                                  ifelse(df$year >= 2001 & df$year <= 2005, "period4",
                                         ifelse(df$year >= 2006 & df$year <= 2010, "period5", "period6")))))

Результат:

df
   year  period
1  1994 period2
2  2009 period5
3  1997 period3
4  2010 period5
5  2011 period6
6  1987 period1
7  1999 period3
8  2007 period5
9  1998 period3
10 1996 period3
11 2006 period5
12 1995 period2
13 2008 period5
14 2015 period6
15 2012 period6
16 2000 period3
17 1989 period1
18 1986 period1
19 1990 period1
20 2014 period6

РЕДАКТИРОВАТЬ :

Другое решение - через dplyr:

Сначала определите вектор с вашими пределами периода:

limits <- c(1986, 1990, 1995, 2000, 2005, 2010, 2016)

Затем сгруппируйте year значения по этим limits:

df1 <- df %>%
  group_by(group = findInterval(year, limits))

Результат:

df1
# A tibble: 20 x 3
# Groups:   group [6]
    year period    group
   <int> <list>    <int>
 1  1994 <lgl [1]>     2
 2  2009 <lgl [1]>     5
 3  1997 <lgl [1]>     3
 4  2010 <lgl [1]>     6
 5  2011 <lgl [1]>     6
 6  1987 <lgl [1]>     1
 7  1999 <lgl [1]>     3
 8  2007 <lgl [1]>     5
 9  1998 <lgl [1]>     3
10  1996 <lgl [1]>     3
11  2006 <lgl [1]>     5
12  1995 <lgl [1]>     3
13  2008 <lgl [1]>     5
14  2015 <lgl [1]>     6
15  2012 <lgl [1]>     6
16  2000 <lgl [1]>     4
17  1989 <lgl [1]>     1
18  1986 <lgl [1]>     1
19  1990 <lgl [1]>     2
20  2014 <lgl [1]>     6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...