Как сгруппировать последовательно повторяющиеся значения в строку и визуализировать ее соответственно? - PullRequest
0 голосов
/ 26 июня 2019

Недавно я создал визуализацию для своей команды, которая отображала 100 самых типичных путешествий клиентов на нашем сайте:

Sequence Sunburst

Я использовал Керри Роддена библиотека последовательных солнечных лучей с d3.Данные - это просто набор разделов, разделенных дефисами, и количество раз, когда эта последовательность наблюдалась.Вот некоторые из моих данных:

|----------------------------------------|--------------|
| Sections                               | Value        |
|----------------------------------------|--------------|
| shopping-shopping-login-shopping-end   | 34           |
|----------------------------------------|--------------|
| shopping-shopping-end                  | 25           |
|----------------------------------------|--------------|
| login-shopping-shopping-shopping-end   | 12           |
|----------------------------------------|--------------| 

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

mcf in Google Analytics

В моем примере вывод должен выглядеть следующим образом:

|----------------------------------------|--------------|
| Sections                               | Value        |
|----------------------------------------|--------------|
| shopping x2 > login > shopping > end   | 34           |
|----------------------------------------|--------------|
| shopping x 2 > end                     | 25           |
|----------------------------------------|--------------|
| login > shopping x 3 > end             | 12           |
|----------------------------------------|--------------| 

КакВы бы решили эту задачу?

Конечно, я могу манипулировать данными для преобразования цепочек в нужный вывод (в виде текстовой строки), но, возможно, существуют библиотеки, которые не только манипулируют данными, но ивизуализирует это более привлекательным способом (как в примере выше)

Edit 1: Я начинаю делать это в JavaScript.

Первый шаг - преобразовать каждую строку в таблице в массив:

Я нашел функцию , которая генерирует вложенный массив, который подсчитывает повторения каждого элемента висходный массив.

var str = "shopping-shopping-coupons-end";
var arr = str.split("-");

function compressArray(original) {
 
	var compressed = [];
	// make a copy of the input array
	var copy = original.slice(0);
 
	// first loop goes over every element
	for (var i = 0; i < original.length; i++) {
 
		var myCount = 0;	
		// loop over every element in the copy and see if it's the same
		for (var w = 0; w < copy.length; w++) {
			if (original[i] == copy[w]) {
				// increase amount of times duplicate is found
				myCount++;
				// sets item to undefined
				delete copy[w];
			}
		}
 
		if (myCount > 0) {
			var a = new Object();
			a.value = original[i];
			a.count = myCount;
			compressed.push(a);
		}
	}
 
	return compressed;
};

console.log(compressArray(arr));

Это хорошо для случаев, когда элементы в последовательной цепочке не появляются снова после того, как другой элемент прерывает последовательный ряд, как в моем var arr.Однако для shopping-shopping-login-shopping-end это не будет работать.Мне нужно будет адаптировать функцию, чтобы, возможно, сбросить счет в этих случаях.

Тем не менее, я буду рад, если вы укажете другие решения.

...