如何通过每月列名称GoogleSheet重塑宽到长格式的数据

问题描述 投票:0回答:1

在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

我们有任何解决方案来实现这一目标吗?

google-apps-script google-sheets reshape unpivot melt
1个回答
1
投票

这个示例脚本怎么样?

Sample script:

当您使用此脚本时,首先,请将输入值放入单元格“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
}
  • 在此示例脚本中,它假设以下情况。 输入值被放入活动纸张的单元格“A1:D4”。 将输出值放入活动纸张的单元格“A6:C14”。

Result:

enter image description here

Other pattern:

result.push([values[0][i], values[j][0], values[j][i]]);被修改为temp.push([values[0][j], values[i][0], values[i][j]]);时,获得以下结果。

enter image description here

Note:

  • 在这些示例脚本中,this script已被修改。
© www.soinside.com 2019 - 2024. All rights reserved.