попарная комбинация строк на основе двух столбцов

По сути, вы запрашиваете таблицу непредвиденных обстоятельств (также известную как перекрестная таблица или перекрестная таблица ). Например, с GNU datamash

datamash -sW crosstab 2,1 unique 3 < file
    1   2   4
1   23, 8,  6,
2   0,  18, 18,
3   38, 0,  10,
4   34, 22, 22,

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

tr -d , < file | datamash -sW crosstab 2,1 unique 3
    1   2   4
1   23  8   6
2   0   18  18
3   38  0   10
4   34  22  22

. Если вы хотите добавить столбец «отсутствует», вам необходимо указать данные-заполнители - либо

{ tr -d , < file ; printf '3 %d -\n' {1..4} ; } | 
  datamash -sW crosstab 2,1 unique 3
    1   2   3   4
1   23  8   -   6
2   0   18  -   18
3   38  0   -   10
4   34  22  -   22

, либо только одну точку и пусть datamash заполнит остальные

{ tr -d , < file ; printf '3  1 -\n' ; } | 
  datamash --no-strict --filler=- -sW crosstab 2,1 unique 3
    1   2   3   4
1   23  8   -   6
2   0   18  -   18
3   38  0   -   10
4   34  22  -   22

1
07.11.2017, 12:45
0 ответов

Теги

Похожие вопросы