1

我有 2 个数据框。

几次数据操作后的第一个数据框看起来像这样

Date
1/2/2019
1/3/2019
1/4/2019
1/5/2019
1/6/2019
1/7/2019
1/8/2019
1/9/2019

第二个数据框是从谷歌表获得的范围,看起来像这样

DATA	UCL
0.005	0.015
0.005	0.015
0.005	0.015
0.005	0.015
0.005	0.015
0.005	0.015
0.005	0.015
0.005	0.015

我如何将这两个变量结合起来形成一个可以传递的数据框。

看起来像这样

Date	DATA	UCL
1/2/2019	0.005	0.015
1/3/2019	0.005	0.015
1/4/2019	0.005	0.015
1/5/2019	0.005	0.015
1/6/2019	0.005	0.015
1/7/2019	0.005	0.015
1/8/2019	0.005	0.015
1/9/2019	0.005	0.015

这是当前代码

    var Bvals = sheet.getRange("B12:B").getValues(); 

    var Blast = Bvals.filter(String).length; 

    var daterange = sheet.getRange(firstrow, 1, Blast, 1); 

    var Dateconverted = Utilities.formatDate(daterange, "GMT", ""EEE MMM dd yyyy");  

    range = sheet.getRange(firstrow, 2, Blast, 3);  

    var datarange2 = range.getValues();   

Dateconverted 是第一个数据框,datarange2 是第二个有 2 列的数据框。我希望将这两个数据框组合为 Var Data3 = {一些代码来组合这两个数据表以创建一个数据表}

4

1 回答 1

0

范围基本上是一个类似于 的二维数组valueOfCellInRange = range[rowIndex][columnIndex],因此要“扩展”每一行以包含来自不同范围内两行的值,您应该能够执行以下操作:

var newRangeValues = [];
for (var i = 0; i < dataRange1.length; i++){
  // Length of the outer array will be the number of rows to loop through
  //   (assumes the two source ranges have an equal number of rows)
  var combinedRow = dataRange1[i].concat(dataRange2[i]); 
  // dataRange1[i] will hold a one-item array like ["Date"]
  // dataRange2[i] will hold an array like ["DATA","UCL"]
  // concat() will merge them into one array

  newRangeValues.push(combinedRow);
}
myTargetRangeOnSheet.setValues(newRangeValues);

注意:我没有在谷歌表格中测试过这段代码,但它应该非常接近你想要做的。(您可以查看对数组的 concat 方法的解释。)

这是一个代码片段,只是为了表明它可以在浏览器中工作:

const dataRange1 = [
  ["Date"],
  ["1/1/19"]
];
const dataRange2 = [
  ["DATA", "UCL"],
  ["DATA thing", "UCL thing"]
];
const newRangeValues = [];

for (let i = 0; i < dataRange1.length; i++){
  const combinedRow = dataRange1[i].concat(dataRange2[i]); 
  newRangeValues.push(combinedRow);
}
console.log(newRangeValues);

于 2019-03-04T09:42:41.497 回答