Изменение формы набора данных из широкого в длинный формат с группировкой по суффиксу переменной - PullRequest
0 голосов
/ 25 апреля 2019

Аналогично, но отличается от этого поста: Изменение формы data.frame из широкого в длинный формат

У меня есть широкий набор данных с уникальной переменной ID и всеми другими переменными с четырехзначным годомсуффикс:

ID MI1995 FRAC1995 MI1996 FRAC1996
1     2         3       2       4
7     3         10      12      1
10    1         2       1       1

Я бы хотел длинный набор данных, сгруппированный по суффиксу переменной из 4 цифр.Таким образом, каждый идентификатор должен иметь 1 строку в год из четырехзначного суффикса:

ID YEAR   MI  FRAC
1   1995   2   3
1   1996   2   4
7   1995   3   10
7   1996   12  1
10  1995   1   2
10  1996   1   1

Базовые / универсальные решения являются предпочтительными.

Основные вопросы здесь заключаются в том, как установить автоматические контрольные точки для"меняющийся" параметр в форме, и как я могу предоставить параметр "timevar" из суффикса переменной?

1 Ответ

3 голосов
/ 25 апреля 2019

Используя reshape, мы можем установить точки отсечки с помощью sep="".

reshape(d, idvar="ID", varying=2:5, timevar="YEAR", sep="", direction="long")
#         ID YEAR MI FRAC
# 1.1995   1 1995  2    3
# 7.1995   7 1995  3   10
# 10.1995 10 1995  1    2
# 1.1996   1 1996  2    4
# 7.1996   7 1996 12    1
# 10.1996 10 1996  1    1

Данные

d <- structure(list(ID = c(1L, 7L, 10L), MI_1995 = c(2L, 3L, 1L),
                    FRAC_1995 = c(3L, 10L, 2L), MI_1996 = c(2L, 12L, 1L),
                    FRAC_1996 = c(4L, 1L, 1L)), row.names = c(NA, -3L),
               class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...