如何按月列名称 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]]);
时,得到如下结果
注:
- 在这些示例脚本中,this script 已修改。
在 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]]);
时,得到如下结果
注:
- 在这些示例脚本中,this script 已修改。