Создание круговой диаграммы из одной строки данных — аналитика SAS

У меня есть набор данных, который состоит из переменной продукта, переменной площади, а затем каждого года за последние 10 лет в качестве отдельной переменной, поэтому всего 12 переменных для набора данных.

Я не могу понять, как отображать данные из одной строки в круговую диаграмму.

Набор данных выглядит так, чтобы его было легче визуализировать:

Product  Area  year1  year2  year3
  1       1     7      14      7  
  1       2     12     15      11
  1       3     5      9       8
  2       1     4      12      5
  2       2     8      3       14
  2       3     5      0       2
  3       1     2      12      12

Мой конечный результат состоит в том, чтобы иметь возможность ввести, скажем, продукт 1 и область 3, а затем создать круговую диаграмму, показывающую значения для каждого года. Я не могу понять, как это сделать, мои текущие знания и исследования показывают, что вытягивание из одной строки невозможно?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Сначала сложите переменные года в один столбец с помощью proc transpose ;
  2. Затем создайте обычную круговую диаграмму с BY Product Area;, чтобы иметь одну диаграмму на исходную строку (при условии, что Продукт * Площадь на самом деле является уникальным идентификатором для ваших строк). Я использовал proc gchart здесь.

    *** DEFINE DATA --------------;
    data have;
        infile datalines dlm=' ';
        input Product  Area  year1  year2  year3;
        datalines;
    1 1 7 14 7
    1 2 12 15 11
    1 3 5 9 8
    2 1 4 12 5
    2 2 8 3 14
    2 3 5 0 2
    3 1 2 12 12
    ;run;
    
    *** STACK YEARS --------------;
    proc sort data=work.have out=work.tmp0temptableinput;
        by product area;
        run;
    proc sql;
        create view work.tt1 as
        select src.*, "values" as _eg_idcol_
        from work.tmp0temptableinput as src;
        quit;
    proc transpose data=work.tt1
            out=work.tt2
            name=year;
        by product area;
        id _eg_idcol_;
        var year:; * THIS IS GENERALISED FOR FOR THAN 3 YEARxx VARIABLES;
        run;
    proc datasets lib=work nolist;
        modify tt2;
        label values = ;
        label year = ;
        label valuedescription = ;
        run;
    
    *** PLOT --------------;
    proc sort
        data=work.tt2
        out=work.tt3;
        by product area;
        run;
    proc gchart data =work.tt3;
        pie  year /
            sumvar=values
            type=sum
            nolegend
            slice=outside
            percent=none
            value=outside
            other=4
            otherlabel = "other"
            coutline=black
            noheading
            ;
        by product area;
        run; quit;
    

Спасибо, очень полезно.

NobodyUsesNumLock 10.04.2019 14:22

Другие вопросы по теме