{"id":112915,"date":"2021-09-13T17:18:52","date_gmt":"2021-09-13T08:18:52","guid":{"rendered":"https:\/\/support.questetra.com\/?p=112915"},"modified":"2021-09-13T17:31:43","modified_gmt":"2021-09-13T08:31:43","slug":"tsv-string-create-cross-table-of-count-2021","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-table-of-count-2021\/","title":{"rendered":"TSV String, Create Cross Table of Count"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#cc66cc;border-radius:0px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#ff99ff;color:#000000;border-top-left-radius:0px;border-top-right-radius:0px\">TSV String, Create Cross Table of Count<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:0px;border-bottom-right-radius:0px\"> Aggregates the count of data by 2 aggregation-key columns (pivot table). Count and Percentage are tabulated as a cross table TSV. E.g. Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1\" data-anchor=\"configs\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Configs<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<ul class=\"fa-ul\">\n<li><span class=\"fa-li\"><i class=\"far fa-edit fa-lg\"><\/i><\/span> A1: Set TSV<span style=\"color:#990000;\"> *<\/span><span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"far fa-pen-square fa-lg\"><\/i><\/span> B2: Set Column ID of Aggregation-Key Y-Field (eg &#8220;4&#8221; )<span style=\"color:#990000;\"> *<\/span><span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"far fa-pen-square fa-lg\"><\/i><\/span> B3: Set Column ID of Aggregation-Key X-Field (eg &#8220;5&#8221; )<span style=\"color:#990000;\"> *<\/span><span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"far fa-pen-square fa-lg\"><\/i><\/span> C1: To Sort by Count, Set DESC or ASC (eg &#8220;ASC&#8221; )<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"far fa-pen-square fa-lg\"><\/i><\/span> C2: To Sort by Y-Agg-Key, Set DESC or ASC (eg &#8220;ASC&#8221; )<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"far fa-pen-square fa-lg\"><\/i><\/span> C3: To Sort by X-Agg-Key, Set DESC or ASC (eg &#8220;ASC&#8221; )<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/li>\n<li><span class=\"fa-li\"><i class=\"fal fa-caret-square-down fa-lg\"><\/i><\/span> D1: Select STRING DATA that stores Count Cross TSV (update)<\/li>\n<li><span class=\"fa-li\"><i class=\"fal fa-caret-square-down fa-lg\"><\/i><\/span> D2: Select STRING DATA that stores Percent Cross TSV (update)<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"script\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Script (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\/\/ GraalJS Script (engine type: 2)\n\n\/\/\/\/\/\/\/\/ START &quot;main()&quot; \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\nmain();\nfunction main(){ \n\n\/\/\/\/ == Config Retrieving \/ \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53c2\u7167 ==\nconst strTsv         = configs.get( &quot;StrConfA1&quot; );           \/\/\/ REQUIRED \/\/\/\/\/\/\/\/\/\/\/\/\/\n  if( strTsv       === &quot;&quot; ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {A1: Tsv} is empty \\n&quot; );\n  }\n  const arr2dTsv     = parseAsRectangular( strTsv );\nconst strYaggField   = configs.get( &quot;StrConfB2&quot; );           \/\/\/ REQUIRED \/\/\/\/\/\/\/\/\/\/\/\/\/\n  if( strYaggField === &quot;&quot; ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B2: Y-AggField} is empty \\n&quot; );\n  }\n  const numYaggField = parseInt( strYaggField, 10 );\n  if( isNaN( numYaggField ) || numYaggField &lt; 0 ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B2: YaggField} must be a positive integer \\n&quot; );\n  }\n  if( numYaggField  &gt;= arr2dTsv[0].length ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B2: YaggField} is larger than TsvWidth \\n&quot; );\n  }\nconst strXaggField   = configs.get( &quot;StrConfB3&quot; );           \/\/\/ REQUIRED \/\/\/\/\/\/\/\/\/\/\/\/\/\n  if( strXaggField === &quot;&quot; ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B3: X-AggField} is empty \\n&quot; );\n  }\n  const numXaggField = parseInt( strXaggField, 10 );\n  if( isNaN( numXaggField ) || numXaggField &lt; 0 ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B3: XaggField} must be a positive integer \\n&quot; );\n  }\n  if( numXaggField  &gt;= arr2dTsv[0].length ){\n    throw new Error( &quot;\\n AutomatedTask ConfigError:&quot; +\n                     &quot; Config {B3: XaggField} is larger than TsvWidth \\n&quot; );\n  }\nconst strNumSort     = configs.get( &quot;StrConfC1&quot; );           \/\/ NotRequired \/\/\/\/\/\/\/\/\/\/\/\nconst strYaggSort    = configs.get( &quot;StrConfC2&quot; );           \/\/ NotRequired \/\/\/\/\/\/\/\/\/\/\/\nconst strXaggSort    = configs.get( &quot;StrConfC3&quot; );           \/\/ NotRequired \/\/\/\/\/\/\/\/\/\/\/\n\nconst strPocketCountPivot   = configs.getObject( &quot;SelectConfD1&quot; ); \/\/ NotRequired \/\/\/\/\/\nconst strPocketPercentPivot = configs.getObject( &quot;SelectConfD2&quot; ); \/\/ NotRequired \/\/\/\/\/\n\n\n\/\/\/\/ == Data Retrieving \/ \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u306e\u53c2\u7167 ==\n\/\/ (Nothing. Retrieved via Expression Language in Config Retrieving)\n\n\n\/\/\/\/ == Calculating \/ \u6f14\u7b97 ==\n\n\/\/ omit repeated Keys in Y-Aggregation Field values (make Keys uniq)\nlet arrYaggKeys = [];\nfor( let i = 0; i &lt; arr2dTsv.length; i++ ){\n  if( arrYaggKeys.indexOf( arr2dTsv[i][ numYaggField ] ) === -1){\n      arrYaggKeys.push(    arr2dTsv[i][ numYaggField ] );\n  }\n  \/\/ Array.indexOf(): strict equality `===` \n  \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/indexOf\n}\n\/\/ omit repeated Keys in X-Aggregation Field values (make Keys uniq)\nlet arrXaggKeys = [];\nfor( let i = 0; i &lt; arr2dTsv.length; i++ ){\n  if( arrXaggKeys.indexOf( arr2dTsv[i][ numXaggField ] ) === -1){\n      arrXaggKeys.push(    arr2dTsv[i][ numXaggField ] );\n  }\n  \/\/ Array.indexOf(): strict equality `===` \n  \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/indexOf\n}\n\n\/\/ sort by Keys\nif( strYaggSort === &quot;ASC&quot; ){ \/\/ ASC: ascending alphabetical from A to Z\n  arrYaggKeys.sort( function( strA, strB ){\n    if( strA &gt; strB ){ return  1; }\n    if( strA &lt; strB ){ return -1; }\n    return 0;\n  });\n}\nif( strYaggSort === &quot;DESC&quot; ){ \/\/ DESC: descending from Z to A\n  arrYaggKeys.sort( function( strA, strB ){\n    if( strA &lt; strB ){ return  1; }\n    if( strA &gt; strB ){ return -1; }\n    return 0;\n  });\n}\nif( strXaggSort === &quot;ASC&quot; ){ \/\/ ASC: ascending alphabetical from A to Z\n  arrXaggKeys.sort( function( strA, strB ){\n    if( strA &gt; strB ){ return  1; }\n    if( strA &lt; strB ){ return -1; }\n    return 0;\n  });\n}\nif( strXaggSort === &quot;DESC&quot; ){ \/\/ DESC: descending from Z to A\n  arrXaggKeys.sort( function( strA, strB ){\n    if( strA &lt; strB ){ return  1; }\n    if( strA &gt; strB ){ return -1; }\n    return 0;\n  });\n}\n\n\/\/ initialize arr2dCountPivot[y][x]\nlet arr2dCountPivot = [];\nfor( let i = 0; i &lt; arrYaggKeys.length; i++ ){\n  arr2dCountPivot[i] = [];\n  for( let j = 0; j &lt; arrXaggKeys.length; j++ ){\n    arr2dCountPivot[i][j] = 0;\n  }\n}\n\/\/ initialize arr2dPercentPivot[y][x]\nlet arr2dPercentPivot = [];\nfor( let i = 0; i &lt; arrYaggKeys.length; i++ ){\n  arr2dPercentPivot[i] = [];\n  for( let j = 0; j &lt; arrXaggKeys.length; j++ ){\n    arr2dPercentPivot[i][j] = 0;\n  }\n}\n\n\/\/ count up\nfor( let i = 0; i &lt; arr2dTsv.length; i++ ){\n  let strYKey = arr2dTsv[i][numYaggField];\n  let strXKey = arr2dTsv[i][numXaggField];\n  arr2dCountPivot[ arrYaggKeys.indexOf( strYKey ) ][ arrXaggKeys.indexOf( strXKey ) ] += 1;\n}\n\n\/\/ X-subtotal Count\nlet arrXsubtotalCount = [];\n  arrXsubtotalCount.push( &quot;total&quot; );\nfor( let i = 0; i &lt; arr2dCountPivot[0].length; i++ ){\n  let numSubtotal = 0;\n  for( let j = 0; j &lt; arr2dCountPivot.length; j++ ){\n    numSubtotal += arr2dCountPivot[j][i];\n  }\n  arrXsubtotalCount.push( numSubtotal );\n}\narrXsubtotalCount.push( arr2dTsv.length );\n\n\/\/ add Y-key and Y-subtotal Count\nfor( let i = 0; i &lt; arr2dCountPivot.length; i++ ){\n  let numSubtotal = 0;\n  for( let j = 0; j &lt; arr2dCountPivot[i].length; j++ ){\n    numSubtotal += arr2dCountPivot[i][j];\n  }\n  arr2dCountPivot[i].push( numSubtotal );       \/\/ add Y-total to the end of an array\n  arr2dCountPivot[i].unshift( arrYaggKeys[i] ); \/\/ add Y-key to the beginning of an array\n}\n\n\/\/ sort by Y-subtotal\nif( strNumSort === &quot;ASC&quot; ){ \/\/ ASC: ascending alphabetical from 0 to 10\n  arr2dCountPivot.sort( function( arrA, arrB ){\n    if( arrA[arrA.length-1] &gt; arrB[arrB.length-1] ){ return  1; }\n    if( arrA[arrA.length-1] &lt; arrB[arrB.length-1] ){ return -1; }\n    return 0;\n  });\n}\nif( strNumSort === &quot;DESC&quot; ){ \/\/ DESC: descending from 10 to 0\n  arr2dCountPivot.sort( function( arrA, arrB ){\n    if( arrA[arrA.length-1] &lt; arrB[arrB.length-1] ){ return  1; }\n    if( arrA[arrA.length-1] &gt; arrB[arrB.length-1] ){ return -1; }\n    return 0;\n  });\n}\n\n\/\/ calc Percent\nfor( let i = 0; i &lt; arr2dCountPivot.length; i++ ){\n  arr2dPercentPivot[i][0] = arr2dCountPivot[i][0]; \/\/ Y-key\n  for( let j = 1; j &lt; arr2dCountPivot[0].length; j++ ){\n    arr2dPercentPivot[i][j] = (arr2dCountPivot[i][j] \/ arr2dTsv.length).toFixed(3);\n  }\n}\n\n\/\/ X-subtotal Percent and Average\nlet arrXsubtotalPercent = [];\n  arrXsubtotalPercent.push( &quot;total&quot; );\nfor( let i = 1; i &lt; arrXsubtotalCount.length; i++ ){\n  arrXsubtotalPercent.push( (arrXsubtotalCount[i] \/ arr2dTsv.length).toFixed(3) );\n}\n\n\/\/ output Cross Tabulation\nlet strCountPivot = &quot;&quot;;\nstrCountPivot += &quot;cross\\t&quot; + arrXaggKeys.join(&quot;\\t&quot;) + &quot;\\ttotal\\n&quot;;\nfor( let i = 0; i &lt; arr2dCountPivot.length; i++ ){\n  strCountPivot += arr2dCountPivot[i].join(&quot;\\t&quot;) + &quot;\\n&quot;;\n}\nstrCountPivot += arrXsubtotalCount.join(&quot;\\t&quot;);\n\nlet strPercentPivot = &quot;&quot;;\nstrPercentPivot += &quot;cross\\t&quot; + arrXaggKeys.join(&quot;\\t&quot;) + &quot;\\ttotal\\n&quot;;\nfor( let i = 0; i &lt; arr2dPercentPivot.length; i++ ){\n  strPercentPivot += arr2dPercentPivot[i].join(&quot;\\t&quot;) + &quot;\\n&quot;;\n}\nstrPercentPivot += arrXsubtotalPercent.join(&quot;\\t&quot;);\n\n\n\/\/\/\/ == Data Updating \/ \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u3078\u306e\u4ee3\u5165 ==\nif( strPocketCountPivot !== null ){\n  engine.setData( strPocketCountPivot, strCountPivot );\n}\nif( strPocketPercentPivot !== null ){\n  engine.setData( strPocketPercentPivot, strPercentPivot );\n}\n\n\n} \/\/\/\/\/\/\/\/ END &quot;main()&quot; \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\/\/ Parses TSV string as two-dimensional rectangular data matrix and creates a 2D array.\nfunction parseAsRectangular( strTsv ){\n  const arrTsv = strTsv.split(&quot;\\n&quot;);\n\n  \/\/\/ Get numMinWidth and numMaxWidth (blank lines are excluded)\n  let numMinWidth   = Infinity; \/\/ cf. String-Type Max: 1 million\n  let numMaxWidth   = 0;\n  let numBlanklines = 0;\n  for( let i = 0; i &lt; arrTsv.length; i++ ){\n    if( arrTsv[i] === &quot;&quot; ){ \/\/ Skip blank lines\n      numBlanklines += 1;\n      continue;\n    }\n    let arrCells = arrTsv[i].split(&quot;\\t&quot;);\n    if( numMinWidth &gt; arrCells.length ){ numMinWidth = arrCells.length; }\n    if( numMaxWidth &lt; arrCells.length ){ numMaxWidth = arrCells.length; }\n  }\n  engine.log( &quot; AutomatedTask TsvDataCheck:&quot; + \n              &quot; MinWidth:&quot; + numMinWidth +\n              &quot; MaxWidth:&quot; + numMaxWidth +\n              &quot; Lines:&quot; + arrTsv.length +\n              &quot; (BlankLines:&quot; + numBlanklines + &quot;)&quot; );\n\n  \/\/\/ Get numMinWidth and numMaxWidth (blank lines are excluded)\n  let arr2dTsv      = [];\n  for( let i = 0; i &lt; arrTsv.length; i++ ){\n    if( arrTsv[i] === &quot;&quot; ){ \/\/ Skip blank lines\n      continue;\n    }\n    let arrTmp = [];\n    let arrCells = arrTsv[i].split(&quot;\\t&quot;);\n    for( let j = 0; j &lt; numMaxWidth; j++ ){\n      if( j &lt; arrCells.length ){\n        arrTmp[j] = arrCells[j];\n      }else{\n        arrTmp[j] = &quot;&quot;;\n      }\n    }\n    arr2dTsv.push( arrTmp );\n  }\n\n  return arr2dTsv;\n}\n\n\/*\nTSV Example:\n2021-08\tOrange\t200\n2021-08\tApple\t1,200\n2021-09\tApple\t1,100\n2021-09\tOrange\t200\n2021-09\tTomato\t500\n2021-09\tOrange\t200\n2021-09\tTomato\t500\n2021-10\tTomato\t500\n2021-10\tTomato\t500\n2021-10\tTomato\t450\n2021-10\tTomato\t450\n\n\nNotes:\n- When the process reaches this automated task, TSV is automatically read.\n    - TSV: Sales Records, Survey Records, etc.\n- If there is a blank line in the input TSV text, it will be skipped.\n    - The line feed code for the last line is not added either.\n-\u3000The output TSV text (total table TSV, etc.) is rectangular data.\n    - The number of rows in TSV is #of {Y aggregate Key types} plus 2 (&quot;header&quot; + &quot;total&quot;).\n    - The number of columns of TSV is #of {X aggregate Key types} plus 2 (&quot;heading&quot; + &quot;total&quot;).\n\nAPPENDIX:\n- TSV (Tab Separated Values) text assumes rectangular data.\n    - Data that is not rectangular is automatically formatted with empty characters.\n    - Blank lines (including the end) are ignored.\n- Only &quot;DESC&quot; or &quot;ASC&quot; is valid for the sort config.\n    - If no sort setting, it will be in the order of appearance.\n    - Character sorting is in code order.\n    - If both character sort and numeric sort are configured, numeric sort is performed after character sort.\n\nNotes-ja:\n- \u6848\u4ef6\u304c\u81ea\u52d5\u51e6\u7406\u5de5\u7a0b\u306b\u5230\u9054\u3057\u305f\u969b\u3001\u6587\u5b57\u5217\u578b\u30c7\u30fc\u30bf\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308bTSV\u304c\u81ea\u52d5\u7684\u306b\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3059\u3002\n    - TSV: \u58f2\u4e0a\u30ec\u30b3\u30fc\u30c9\u3001\u30a2\u30f3\u30b1\u30fc\u30c8\u306e\u30ed\u30b0\u3001\u306a\u3069\n- \u5165\u529bTSV\u30c6\u30ad\u30b9\u30c8\u306b\u7a7a\u884c\u304c\u3042\u308b\u5834\u5408\u3001\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002\n    - \u51fa\u529bTSV\u306e\u6700\u7d42\u884c\u306b\u6539\u884c\u30b3\u30fc\u30c9\u306f\u4ed8\u4e0e\u3055\u308c\u307e\u305b\u3093\u3002\n- \u51fa\u529b\u3055\u308c\u308bTSV\u30c6\u30ad\u30b9\u30c8\uff08\u5408\u8a08\u5024\u30c6\u30fc\u30d6\u30ebTSV\u7b49\uff09\u306f\u3001\u77e9\u5f62\u30c7\u30fc\u30bf\u3067\u3059\u3002\n    - TSV\u306e\u884c\u6570\u306f\u3001{Y\u96c6\u7d04Key\u306e\u7a2e\u985e\u6570} \u306b\uff12\uff08&quot;\u30d8\u30c3\u30c0\u884c&quot; + &quot;\u5408\u8a08\u884c&quot;\uff09\u3092\u52a0\u3048\u305f\u6570\u306b\u306a\u308a\u307e\u3059\u3002\n    - TSV\u306e\u5217\u6570\u306f\u3001{X\u96c6\u7d04Key\u306e\u7a2e\u985e\u6570} \u306b\uff12\uff08&quot;\u898b\u51fa\u3057\u5217&quot; + &quot;\u5408\u8a08\u5217&quot;\uff09\u3092\u52a0\u3048\u305f\u6570\u306b\u306a\u308a\u307e\u3059\u3002\n\nAPPENDIX-ja:\n- TSV\uff08Tab Separated Values\uff09\u30c6\u30ad\u30b9\u30c8\u306f\u3001\u77e9\u5f62\u30c7\u30fc\u30bf\u3092\u524d\u63d0\u3068\u3057\u307e\u3059\u3002\n    - \u77e9\u5f62\u3067\u306a\u3044\u30c7\u30fc\u30bf\u306f\u3001\u7a7a\u6587\u5b57\u306b\u3088\u3063\u3066\u81ea\u52d5\u6574\u5f62\u3055\u308c\u307e\u3059\u3002\n    - \u7a7a\u884c\uff08\u672b\u5c3e\u6539\u884c\u3092\u542b\u3080\uff09\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002\n- \u30bd\u30fc\u30c8\u8a2d\u5b9a\u306f &quot;DESC&quot; \u3082\u3057\u304f\u306f &quot;ASC&quot; \u306e\u307f\u304c\u6709\u52b9\u3067\u3059\u3002\n    - \u30bd\u30fc\u30c8\u8a2d\u5b9a\u304c\u306a\u3044\u5834\u5408\u3001\u51fa\u73fe\u9806\u306b\u306a\u308a\u307e\u3059\u3002\n    - \u6587\u5b57\u30bd\u30fc\u30c8\u306f\u6587\u5b57\u30b3\u30fc\u30c9\u9806\u306b\u306a\u308a\u307e\u3059\u3002\n    - \u6587\u5b57\u30bd\u30fc\u30c8\u3068\u6570\u5024\u30bd\u30fc\u30c8\u304c\u3069\u3061\u3089\u3082\u8a2d\u5b9a\u3055\u308c\u305f\u5834\u5408\u3001\u6587\u5b57\u30bd\u30fc\u30c8\u306e\u5f8c\u306b\u6570\u5024\u30bd\u30fc\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\n*\/\n\n<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright\"><a href=\"#\"><img decoding=\"async\" src=\"data:image;base64,\niVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAw5JREFUWEfN\nl01IFGEYx38juvmxkmshEoqblSR2cQ+CIIHiYT34lQgWeSgPuyaoQRgoeA\/D7WKOYAUadQjq5LlL\nBRkokYhYaKSHwFrNWKttceKdbXR39mNmt4VtT8vwPs\/7m+fj\/zwjkeafZPr+KXJRuIBEPQrVSNgB\n21\/7bRQ+IrGIwnMknuJiz4xvY4AHFOPnJuAGss04BX4CMhZucYXP8WziA8i4kbgN5Jm8WH\/Mh8IN\n3Mix7GMDTHEX6E3yYr3ZJC6uRfMVHUDmERIXU3R50I3CY9xc0vuMBNC9edepLsZrx7FmWRPiWdlZ\noeZZjWEkwgGCOZ8Mteo+081E3QT5WfkJASxvL1P1pCrSRqE3tCYOAYLV\/kFfcBqAhMTY2zHWv6\/H\nBWkua6azvJOYAODDwmmtOw4BpvAAg3rvGoB43veij9n3sxEADScaaLG3ENgPUGApoOdsTzwAYX8H\nF9fFnyCAEBn4Gq3PzQC02ltxljjZ8G1Qnl9uBkDoxDEhVkEAmctIRL4aYCYFGVIGxbnFbP3Ywlnq\nNEqB1hXduHmoReAecDVaclNehIeX3MdFjxaBBSSq4wGINtwL7LGv7KvHRFHmZOaoeffv+w9MM6VM\n9XmcItQisIgbhxYBb8hgCePQ18Du713KrGUseZeYqZ9B9HvjXOOBzfT5aTM1IM5v46JQA1Bi9VYo\nwPD8ME2lTZRaS9VuGDg3oALMb81TklfCpm+TouwiswDgQkoIYPDVII7jDiptlcjLMp5ajwrgeeeh\n8Egh3l9e2u3tSQGYToGmA6L3U5cCGcMiTJkUa7lWCCtCwzbUK2EKIhDWhoZCJABG3ozQZm9TW2\/h\ny4IqUqIGhBBVHK1g9dsqa7tr5mpAIUyITEnx0OshOk52qBUvCm\/UMZpsF+ikODgPDIdR\/8t+fAEf\nO\/4dbBabuick2QW6YSQADMZxCpUwxjgODqU0LiRae+hWMpHvuuI6sjKyEtqIhCjNfZrT20Qsp\/\/h\nUhojEgm9fuThBNdyzUFaP0w0iLR+moWGMm0fp\/+YfCPzP5RaqTCvMLQEAAAAAElFTkSuQmCC\n\" alt=\"\"\/><\/a><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-cloud-download-alt\"><\/i> Download<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/drive.google.com\/file\/d\/1HW5ugNovXkVlfVtakLA8hPi7C9vE2AqL\/view?usp=drivesdk\" target=\"_blank\" rel=\"noreferrer noopener\">Tsv-String-Create-Cross-Table-of-Count-2021.xml<\/a><\/li><\/ul>\n\n\n\n<p class=\"has-text-align-right has-small-font-size wp-block-paragraph\">2021-09-12 (C) Questetra, Inc. (MIT License)<br><a href=\"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-table-of-count-2021\/\">https:\/\/support.questetra.com\/addons\/tsv-string-create-cross-table-of-count-2021\/<\/a><br><i class=\"fal fa-info-circle\"><\/i> The Add-on import feature is available with <span style=\"color:#4a86e8\" class=\"has-inline-color\"><strong>Professional<\/strong><\/span> edition.<br>Freely modifiable JavaScript (ECMAScript) code. No warranty of any kind.<\/p>\n\n\n<div class=\"su-divider su-divider-style-dashed\" style=\"margin:30px 0;border-width:8px;border-color:#009900\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-lightbulb-exclamation\"><\/i> Notes<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>When the process reaches this automated task, the TSV is read automatically.<ul><li>TSV: Sales Records, Survey Records, etc.<\/li><\/ul><\/li><li>If there is a blank line in the input TSV text, it will be skipped.<ul><li>The line feed code for the last line is not added either.<br>-\u3000The output TSV text (total table TSV, etc.) is rectangular data.<\/li><li>The number of rows in TSV is #of {Y aggregate Key types} plus 2 (&#8220;header&#8221; + &#8220;total&#8221;).<\/li><li>The number of columns of TSV is #of {X aggregate Key types} plus 2 (&#8220;heading&#8221; + &#8220;total&#8221;).<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-images\"><\/i> Capture<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?ssl=1\" target=\"_blank\" rel=\"noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" data-attachment-id=\"112903\" data-permalink=\"https:\/\/support.questetra.com\/en\/maintenance\/maintenance-20251117\/attachment\/tsv-string-create-cross-table-of-count-2021-capture-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?fit=1200%2C675&amp;ssl=1\" data-orig-size=\"1200,675\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"tsv-string-create-cross-table-of-count-2021-capture-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?fit=1024%2C576&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?resize=1200%2C675&#038;ssl=1\" alt=\"Aggregates the count of data by 2 aggregation-key columns: Pivot table. Count and Percentage are tabulated as a cross table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.\" class=\"wp-image-112903\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-capture-en.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default q-box\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"658\" height=\"630\" data-attachment-id=\"112907\" data-permalink=\"https:\/\/support.questetra.com\/en\/maintenance\/maintenance-20251117\/attachment\/tsv-string-create-cross-table-of-count-2021-config-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?fit=1197%2C1146&amp;ssl=1\" data-orig-size=\"1197,1146\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"tsv-string-create-cross-table-of-count-2021-config-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?fit=658%2C630&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en-658x630.png?resize=658%2C630&#038;ssl=1\" alt=\"Aggregates the count of data by 2 aggregation-key columns: Pivot table. Count and Percentage are tabulated as a cross table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.\" class=\"wp-image-112907\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?resize=658%2C630&amp;ssl=1 658w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?resize=329%2C315&amp;ssl=1 329w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?resize=768%2C735&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-config-en.png?w=1197&amp;ssl=1 1197w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-book\"><\/i> Appendix<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>TSV (Tab Separated Values) text assumes rectangular data.<ul><li>Data that is not rectangular is automatically formatted with empty characters.<\/li><li>Blank lines (including the end) are ignored.<\/li><\/ul><\/li><li>Only &#8220;DESC&#8221; or &#8220;ASC&#8221; is valid for the sort config.<ul><li>If no sort setting is specified, it will be sorted in the order of appearance.<\/li><li>Character sorting is in code order.<\/li><li>If both character sort and numeric sort are configured, numeric sort is performed after character sort.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-balance-scale\"><\/i> See also<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-questetra-support wp-block-embed-questetra-support\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"glp1KkvE6e\"><a href=\"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-table-for-numeric-column-2021\/\">TSV String, Create Cross Table for Numeric Column<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;TSV String, Create Cross Table for Numeric Column&#8221; &#8212; Questetra Support\" src=\"https:\/\/support.questetra.com\/addons\/tsv-string-create-cross-table-for-numeric-column-2021\/embed\/#?secret=4kjr3Ludnc#?secret=glp1KkvE6e\" data-secret=\"glp1KkvE6e\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Aggregates the count of data by 2 aggregation-key columns: Pivot table. Count and Percentage are tabulated as a cross table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.<\/p>\n","protected":false},"author":2,"featured_media":112911,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"Aggregates the count of data by 2 aggregation-key columns: Pivot table. Count and Percentage are tabulated as a cross table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[168],"tags":[486,494,389],"class_list":["post-112915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-addons","tag-order-fulfillment","tag-routine-report","tag-tsv-csv"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1","uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"IMAMURA, Genichi","author_link":"https:\/\/support.questetra.com\/en\/author\/imamuragenichi\/"},"uagb_comment_info":0,"uagb_excerpt":"Aggregates the count of data by 2 aggregation-key columns: Pivot table. Count and Percentage are tabulated as a cross table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. 2D frequency distribution.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-tnd","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":112902,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-summary-table-of-count-2021\/","url_meta":{"origin":112915,"position":0},"title":"TSV String, Create Summary Table of Count","author":"IMAMURA, Genichi","date":"2021-09-13","format":false,"excerpt":"Aggregates the count of data by aggregation-keys. Count and Percentage are tabulated as a summary table TSV. Eg, Survey Results TSV is automatically generated from Survey Records TSV. Frequency distribution.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"TSV String, Create Summary Table of Count","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-of-count-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":112482,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-summary-table-for-numeric-column-2021\/","url_meta":{"origin":112915,"position":1},"title":"TSV String, Create Summary Table for Numeric Column","author":"IMAMURA, Genichi","date":"2021-09-07","format":false,"excerpt":"Aggregates the values in a numeric column by aggregation-keys. Sum, Percentage, Count and Average are tabulated as a summary table TSV. For example, \"Sales for each client\" is aggregated from \"Sales log TSV\". Grand Total Tabulation.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"TSV String, Create Summary Table for Numeric Column","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-summary-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":112691,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-table-for-numeric-column-2021\/","url_meta":{"origin":112915,"position":2},"title":"TSV String, Create Cross Table for Numeric Column","author":"IMAMURA, Genichi","date":"2021-09-08","format":false,"excerpt":"Aggregates the values in a numeric column by 2 aggregation-key columns: Pivot table. Sum, Percentage, Count and Average are tabulated as a cross table TSV. Eg, \"Sales for each combination of Client-Y and Store-X\" is aggregated from \"Sales log TSV\".","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-create-cross-table-for-numeric-column-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":112879,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-switch-rows-and-columns-2021\/","url_meta":{"origin":112915,"position":3},"title":"TSV String, Switch Rows and Columns","author":"IMAMURA, Genichi","date":"2021-09-13","format":false,"excerpt":"Switches the row and column indices of the rectangle TSV. The output matrix (Transposed Matrix) is obtained by changing cell(x,y) to (y,x). Used for data arrangement for frequency distribution tables and histograms.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"TSV String, Switch Rows and Columns","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-switch-rows-and-columns-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-switch-rows-and-columns-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-switch-rows-and-columns-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-switch-rows-and-columns-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/09\/tsv-string-switch-rows-and-columns-2021-nocode-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":82429,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-tab-for-numerical-sum\/","url_meta":{"origin":112915,"position":4},"title":"TSV String, Create Cross Tab for Numerical Sum","author":"IMAMURA, Genichi","date":"2019-12-05","format":false,"excerpt":"Creates a crosstab (pivot table) for numeric fields in TSV data. For example, the \"Amount\" in the order history (TSV) is aggregated on two axes, \"Responsible\" and \"Product\". The fields for X-axis and Y-axis aggregation are specified by TSV field ID.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"TSV String, Create Cross Tab for Numerical Sum","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":109999,"url":"https:\/\/support.questetra.com\/en\/addons\/tsv-string-create-cross-tab-for-numerical-sum-2021\/","url_meta":{"origin":112915,"position":5},"title":"TSV String, Create Cross Tab for Numerical Sum","author":"Hirotaka NISHI","date":"2021-07-21","format":false,"excerpt":"Creates a crosstab table (or pivot table) for the numeric fields of TSV data. For example, the \"Amount\" in the order history (TSV) is aggregated on the two axes of \"Person Responsible\" and \"Product\". The fields for X-axis and Y-axis aggregation are specified by the TSV field ID.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"TSV String, Create Cross Tab for Numerical Sum","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/12\/TSV-String-Create-Cross-Tab-for-Numerical-Sum-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/112915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=112915"}],"version-history":[{"count":4,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/112915\/revisions"}],"predecessor-version":[{"id":112960,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/112915\/revisions\/112960"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/112911"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=112915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=112915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=112915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}