Изменение формы от длинного к широкому с несколькими парами ключей и агрегирование на основе значений нескольких столбцов - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть фрейм данных, который выглядит следующим образом:

 df <- data.frame(value =c(2,3,1,3,5,2),
         renew =c(2,2,3,2,4,1),
         renewFreq = c(.02,.12,.13,.12,.40,.04),
         recommend = c(1,3,5,4,2,2),
         recommendFreq = c(.01,.30,.46,.20,.07,.07),
         year = c(1,2,3,2,1,1),
         valueFreq = c(.02,.03,.01,.03,.05,.02),
         meanVal = c(1.1,2.2,3.1,2.2,1.1,1.1))

    value renew renewFreq recommend recommendFreq year valueFreq meanVal
1     2     2      0.02         1          0.01    1      0.02     1.1
2     3     2      0.12         3          0.30    2      0.03     2.2
3     1     3      0.13         5          0.46    3      0.01     3.1
4     3     2      0.12         4          0.20    2      0.03     2.2
5     5     4      0.40         2          0.07    1      0.05     1.1
6     2     1      0.04         2          0.07    1      0.02     1.1

в этом фрейме данных, значение, обновить и рекомендовать в масштабе 1-5.Столбцы Freq показывают частоту для шкалы по годам.Среднее значение является средним для каждого года.Таким образом, существуют повторяющиеся значения, которые необходимо сжать по годам.Мне также нужны агрегаты обновлений и рекомендуемые частоты, чтобы при значении шкалы 1 или 2 они суммировались, 3 получал новый столбец, а 4 и 5 суммировались.

Изменение формы должно выглядеть следующим образом:

   year value.1 value.2 value.3 value.4 value.5 meanVal prctRenew1or2 prctRenew3 prctRenew4or5 prctRecomm1or2 prctRecomm3 prctRecomm4or5

 1    1    0.00    0.04    0.00       0    0.05     1.1          0.06       0.00           0.4           0.15         0.0           0.00
 2    2    0.00    0.00    0.06       0    0.00     2.2          0.24       0.00           0.0           0.00         0.3           0.20
 3    3    0.01    0.00    0.00       0    0.00     3.1          0.00       0.13           0.0           0.00         0.0           0.46

Значение value (1-5) должно быть значением заголовков.1 - value.5, а значения - valueFreq для этого года,meanVal - это среднее значение, свернутое по году.Наконец, есть 6 столбцов prct.Например, prctRenew1or2 будет суммой частот для renewFreq, где обновляемый счет равен 1 или 2 (и т. Д. Для других переменных prct).

Обратите внимание, что некоторые столбцы имеют значения 0 для всехпуть вниз, однако важно, что они все еще включены.

...