Сейчас я настраиваюсь на новую работу, где большая часть работы, которую я делю с коллегами, через MS Excel. Я часто использую сводные таблицы и поэтому нуждаюсь в "накопленных" данных, точно вывод функции melt()
в пакете reshape
(reshape2) в R, на который я пришел, чтобы полагаться на это.
Может ли кто-нибудь запустить меня на макросе VBA, чтобы выполнить это, или он уже существует?
Контур макроса будет выглядеть следующим образом:
- Выберите диапазон ячеек в книге Excel.
- Запустите макрос "расплавить".
- Макрос создаст приглашение "Введите количество столбцов id", где вы должны ввести число, предшествующее столбцам идентификационной информации. (для примера R-кода под ним 4).
- Создайте новый лист в файле excel под названием "melt" который будет складывать данные и создать новый столбец под названием "переменная", равный заголовкам столбцов данных из исходного выбора.
Другими словами, результат будет выглядеть точно так же, как вывод простого выполнения этих двух строк в R:
require(reshape)
melt(your.unstacked.dataframe, id.vars = 1:4)
Вот пример:
# unstacked data
> df1
Year Month Country Sport No_wins No_losses High_score Total_games
2 2010 5 USA Soccer 4 3 5 9
3 2010 6 USA Soccer 5 3 4 8
4 2010 5 CAN Soccer 2 9 7 11
5 2010 6 CAN Soccer 4 8 4 13
6 2009 5 USA Soccer 8 1 4 9
7 2009 6 USA Soccer 0 0 3 2
8 2009 5 CAN Soccer 2 0 6 3
9 2009 6 CAN Soccer 3 0 8 3
# stacking the data
> require(reshape)
> melt(df1, id.vars=1:4)
Year Month Country Sport variable value
1 2010 5 USA Soccer No_wins 4
2 2010 6 USA Soccer No_wins 5
3 2010 5 CAN Soccer No_wins 2
4 2010 6 CAN Soccer No_wins 4
5 2009 5 USA Soccer No_wins 8
6 2009 6 USA Soccer No_wins 0
7 2009 5 CAN Soccer No_wins 2
8 2009 6 CAN Soccer No_wins 3
9 2010 5 USA Soccer No_losses 3
10 2010 6 USA Soccer No_losses 3
11 2010 5 CAN Soccer No_losses 9
12 2010 6 CAN Soccer No_losses 8
13 2009 5 USA Soccer No_losses 1
14 2009 6 USA Soccer No_losses 0
15 2009 5 CAN Soccer No_losses 0
16 2009 6 CAN Soccer No_losses 0
17 2010 5 USA Soccer High_score 5
18 2010 6 USA Soccer High_score 4
19 2010 5 CAN Soccer High_score 7
20 2010 6 CAN Soccer High_score 4
21 2009 5 USA Soccer High_score 4
22 2009 6 USA Soccer High_score 3
23 2009 5 CAN Soccer High_score 6
24 2009 6 CAN Soccer High_score 8
25 2010 5 USA Soccer Total_games 9
26 2010 6 USA Soccer Total_games 8
27 2010 5 CAN Soccer Total_games 11
28 2010 6 CAN Soccer Total_games 13
29 2009 5 USA Soccer Total_games 9
30 2009 6 USA Soccer Total_games 2
31 2009 5 CAN Soccer Total_games 3
32 2009 6 CAN Soccer Total_games 3