Javascript для получения случайной выборки данных

#javascript #google-apps-script #google-sheets #random

#язык JavaScript #google-приложения-скрипт #google-листы #Случайный

Вопрос:

введите описание изображения здесь

Привет всем, я работаю над набором данных в Google Sheet, и мне нужно получить случайные данные (указанное число) по именам col 3 для аудита.Я использую скрипт приложения Google для того же, но не смог получить данные. Вот код, который я пробовал, но мне не нужен процент данных, мне нужны равномерно распределенные случайные данные для каждого сотрудника в col 3.

 function myFunction() {  var ss = SpreadsheetApp.getActiveSpreadsheet();  var trn = ss.getSheetByName('Data');  var originalData = trn.getRange(2, 1, trn.getLastRow() - 1, 3).getValues();   var ReviewerEmail = data;   var data = originalData.filter(function(item) {  return item[1] === 'rob' || item[1] === 'john' || item[1] === 'toger';  });   //Logger.log(data);   var targetsheet = ss.insertSheet(Reviewer);  targetsheet.getRange(1, 1, data.length, data[0].length).setValues(data); } function getsampledata() {  var sheet = SpreadsheetApp.getActiveSheet();  var range = sheet.getRange('A:C');  var values = range.getValues();  var headers = values.shift();  var nameColumn = 1;  var uniqueNames = values  .map((row) =gt; row[nameColumn])  .filter((item, i, ar) =gt; ar.indexOf(item) === i)  .filter(String);  var data = [headers];  uniqueNames.forEach(function(name) {  var nameEntries = values.filter((row) =gt; row[nameColumn] == name);  var entries = nameEntries.length;  var tenth = Math.round((entries / 100) * 27.35); //Sampling Percentage  for (i = 0; i lt; tenth; i  ) {  var random = Math.floor(Math.random() * nameEntries.length);  data.push(nameEntries[random]);  nameEntries.splice(random, 1);  }  });  return data; }  

введите описание изображения здесь

Комментарии:

1. Извините, что я не до конца понял вашу цель, особенно эту I don't want the % of data I want to get it. I want the equal distributed random data for each employee. . Можете ли вы привести несколько примеров ожидаемого результата. А также поделитесь образцом листа

2. @Ron M Мне нужны равномерно распределенные случайные данные для каждого сотрудника в col 3. Например, если Джон сделал 4 образца, мне нужно 2 или 3 (число, которое я укажу), это даст 2 случайные строки работы джона

Ответ №1:

Если вам нужно определенное количество образцов, используйте параметр, чтобы указать, сколько вы хотите для каждого.

Весь рабочий сценарий:

 function getsampledata(sample) {  var sheet = SpreadsheetApp.getActiveSheet();  var range = sheet.getRange('A:C');  var values = range.getValues();  var headers = values.shift();  var nameColumn = 2;  var uniqueNames = values  .map((row) =gt; row[nameColumn])  .filter((item, i, ar) =gt; ar.indexOf(item) === i)  .filter(String);  var data = [headers];  uniqueNames.forEach(function(name) {  var nameEntries = values.filter((row) =gt; row[nameColumn] == name);  for (i = 0; i lt; sample; i  ) {  var random = Math.floor(Math.random() * nameEntries.length);  data.push(nameEntries[random]);  nameEntries.splice(random, 1);  }  });  return data; }  

введите описание изображения здесь

Комментарии:

1. Спасибо за вашу помощь, но что, если мне не нужен процент выборки данных. Вместо этого мне нужны 2 или 3 строки данных о каждом сотруднике.

2. Вы имеете в виду определенный процент? или конкретный счет? если у нас есть 100 предметов, 50 от Роба, 30 от Джона и 20 от тогера, сколько предметов вы хотите, чтобы у каждого человека было? @5aadat

3. Вы должны быть конкретны в правилах распространения, чтобы другие могли понять @5aadat

4. Не какой-то конкретный, например, мне нужно 4 строки данных из каждой, и они могут меняться каждый день не в процентах, а в цифрах, как Джон проделал 350 строк работы, и мне нужно 4 случайных выборки @ASyntuBU

5. Больше разъяснений — как будто все выполнили 300 400 500 строк работы, и мне нужно определенное количество образцов каждой из них. Как будто я хочу 4 случайных образца каждого из них @ASyntuBU