如何按月列名称 GoogleSheet 将数据从宽到长的形式重塑

How to reshape data for wide to long form by monthly columns name GoogleSheet

在 R 中,data.table 库 dcast() 可以将数据集从宽形状转换为长形状,我如何在 googlespreadsheet 中执行此操作?

来自这种格式:

          | JAN        | FEB        | MAR 
----------+------------+------------+-----------
Product 1 |          1 |          2 |          3
Product 2 |          4 |          5 |          6
Product 3 |          7 |          8 |          9

将其转换为这种格式:

Date|  Product  | Qty
-----------+-----------+----
JAN | Product 1 |   1
FEB | Product 2 |   4
MAR | Product 3 |   9
JAN | Product 2 |   4
FEB | Product 1 |   2
JAN | Product 3 |   7
MAR | Product 2 |   6
FEB | Product 3 |   8
MAR | Product 1 |   3

我们有什么解决方案吗?

这个示例脚本怎么样?

示例脚本:

当您使用此脚本时,首先,请将输入值输入单元格"A1:D4"和运行 myFunction().

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getRange("A1:D4").getValues(); // Retrieve values

  var result = [];
  for (var i = 1; i < values.length; i++) {
    for (var j = 1; j < values[i].length; j++) {
      result.push([values[0][i], values[j][0], values[j][i]]);
    }
  }

  sheet.getRange("A6:C14").setValues(result); // Put result
}
  • 在这个示例脚本中,它假定了以下情况。
    • 输入值被放入活动 sheet 的单元格 "A1:D4"。
    • 输出值被放入活动 sheet 的单元格 "A6:C14"。

结果:

其他图案:

result.push([values[0][i], values[j][0], values[j][i]]);修改为temp.push([values[0][j], values[i][0], values[i][j]]);时,得到如下结果

注: