Octave w obliczeniach: przykład zastosowań zaawansowanych typów danych

Wykonanie poniższego skryptu pozwoliło na zapamiętanie informacji o sprzedaży biletów w jednej zmiennej (tablicy komórek) o nazwie lista. Pierwsze dwie kolumny tej zmiennej zawierają dane tekstowe (przy czym dane w kolumnie nr 1 mają w poszczególnych wierszach różną długość), natomiast dwie ostatnie kolumny zawierają dane liczbowe.

% ======================================= Początek skryptu ======================================= 
clear;clc;
lista = {};
flag = 'T';
i = 0;
while flag == 'T'
  clc;
  i = i+1;
  lista(i,1) = input('Podaj imię i nazwisko: ','s');
  lista(i,2) = input('Podaj klasę kupowanego biletu (A, B lub C): ','s');
  lista(i,3) = input('Podaj liczbę biletów: ');
  lista(i,4) = input('Podaj cenę pojedynczego biletu: ');

  flag = input('Czy kontynuujesz sprzedaż? TAK - T, NIE - N: ','s');
end

lista
% ======================================== Koniec skryptu ======================================== 

Oto zawartość uzyskanej tablicy komórek (zmienna lista):

lista =
{
  [1,1] = Jan Kowalski
  [2,1] = Anna Górna
  [3,1] = Kazimierz Dolny
  [4,1] = Bolesław Śmiały
  [5,1] = Grażyna Wysocka
  [1,2] = A
  [2,2] = B
  [3,2] = C
  [4,2] = A
  [5,2] = A
  [1,3] = 2
  [2,3] = 6
  [3,3] = 10
  [4,3] = 1
  [5,3] = 3
  [1,4] = 100
  [2,4] = 80
  [3,4] = 50
  [4,4] = 100
  [5,4] = 100
}

Rozmiar zmiennej 'lista':

>> size(lista)
ans =
   5   4

Zdolność do przechowywania różnych typów danych w jednej zmiennej jest cenną właściwością komórek, ale ich możliwości prezentacyjne są raczej ograniczone. Spróbujmy zatem zaprezentować dane ze zmiennej lista (tablica komórek) w ramce danych. Najpierw załadujemy wymagany pakiet dataframe a później utworzymy ramkę danych na bazie naszej listy. Ponieważ w tablicy komórek nie ma nagłówka danych, do polecenia utworzenia dataframe’u dodamy dodatkowy argument, definiujący nagłówki kolumn tworzonej ramki danych. Ten dodatkowy argument podany jest w formacie komórki.

>> pkg load dataframe
>>

>> df = dataframe(lista,'colnames',{'PODROZNY','KLASA','LICZBA','CENA'})

df = dataframe with 5 rows and 4 columns
_1           PODROZNY KLASA LICZBA   CENA
Nr               char  char double double
 1       Jan Kowalski     A      2    100
 2         Anna Górna     B      6     80
 3    Kazimierz Dolny     C     10     50
 4    Bolesław Śmiały     A      1    100
 5    Grażyna Wysocka     A      3    100

% Dodajmy teraz do ramki danych nową kolumnę, zdefiniowaną jako iloczyn liczby kupionych biletów i ich ceny

 >> df.WARTOSC=df.LICZBA.*df.CENA

 df = dataframe with 5 rows and 5 columns
_1           PODROZNY KLASA LICZBA   CENA WARTOSC
Nr               char  char double double  double
 1       Jan Kowalski     A      2    100     200
 2         Anna Górna     B      6     80     480
 3    Kazimierz Dolny     C     10     50     500
 4    Bolesław Śmiały     A      1    100     100
 5    Grażyna Wysocka     A      3    100     300

Podobne wpisy