Я хочу создать группы в своем файле JSON, группы должны основываться на аналогичных ссылках и значениях, как указано ниже, код для создания файла JSON из CSV выглядит следующим образом:
const fs = require('fs');
fs.readFile('GephiMatrix_co-authorship.csv', (error, content) => {
if (error) {
return console.error('Error while reading file: ', error);
}
let lines = content.toString().split('\n');
// delete the last line
lines = lines.slice(0, lines.length - 1);
let nodes = lines.shift().split(';');
// remove the first node because it is empty
nodes.shift();
nodes = nodes.map((node, idx) => ({name: node, id: idx}));
lines = lines.map(line => {
let tmp = line.split(';');
tmp = tmp.slice(1, tmp.length - 1);
return tmp.map(x => parseFloat(x));
});
links = [];
for (let i = 0; i < lines.length; i++) {
for (let j = 0; j < lines[0].length; j++) {
if (lines[i][j] !== 0) {
links.push({source: i, target: j, weight: lines[i][j]});
}
}
}
const obj = {
nodes: nodes,
links: links
}
fs.writeFile('output3.json', JSON.stringify(obj, undefined, 4), (errWrite) => {
if (errWrite) {
return console.error('There was an error when writing the json output: ', errWrite);
}
});
});
Это выводит это:
{
"nodes": [
{
"name": "Jim_Thomas",
"id": 0
},
{
"name": "Eleftherios_Koutsofios",
"id": 1
},
...
"links": [
{
"source": 0,
"target": 57,
"weight": 1
},
{
"source": 1,
"target": 57,
"weight": 1
},
...
Это очень упрощено, но, как вы можете видеть, источники 0 и 1 (Джим и Элефтерио соответственно) имеют одну и ту же цель и одну и ту же весовую ссылку, поэтому я хочу назначить их обоих в одну группу.
Таким образом, узлы становятся такими:
"nodes": [
{
"name": "Jim_Thomas",
"id": 0
"group": 1
},
{
"name": "Eleftherios_Koutsofios",
"id": 1
"group": 1
},
...
Заранее спасибо!