объединить 2 переменных фрейма данных с одинаковым количеством строк в 1 отдельный фрейм данных в скрипте Google - PullRequest
0 голосов
/ 04 марта 2019

У меня есть 2 кадра данных.

1-й кадр данных после нескольких манипуляций с данными выглядит следующим образом

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

2-й фрейм данных - это диапазон, полученный из листа Google, который выглядит следующим образом

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

Как мне объединить эти 2 переменные в один кадр данных, который можно передать.

чтобы выглядеть так

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();   

Преобразование даты - 1-й кадр данных, datarange2 - 2-й кадр данных с 2 столбцами.Я хочу объединить эти 2 фрейма данных как Var Data3 = {некоторый код, чтобы объединить эти 2 таблицы данных для создания одной таблицы данных}

1 Ответ

0 голосов
/ 04 марта 2019

Диапазон - это в основном двумерный массив, который работает как 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);

Примечание. Я не проверял этот код на листах Google, но он должен быть очень близок к тому, что вы пытаетесь сделать.(И вы можете проверить это объяснение метода 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...