Sunteți pe pagina 1din 7

TRANSFORMAREA UNEI VARIABILE

5 NUMERICE ÎN FORMĂ CATEGORIALĂ

Noţiuni prezentate:
Transformarea unei variabile numerice în formă categorială.
 Funcţia if() - de un ajutor incomensurabil.
 Funcţia Lookup() - dedicată conversiilor în formă categorială.

Există multe cazuri în care suntem nevoiţi să transformăm o variabilă


numerică într-o formă categorială. Ca exemple putem menţiona:
transformarea notei din sistemul zecimal în calificativ de genul foarte bine,
bine, suficient, insuficient; crearea grupelor de vârstă din 5 în 5 ani; evaluarea
stării de funcţionare a rinichiului prin valoarea clearance-ului de creatinină
(90-120 - normal, 50-90 este stadiul 1 etc.).
Avem astfel nevoie de o metodă de comparare a valorii studiate cu un
anumit prag şi în final vom lua decizia de clasificare.
Funcţia if() este special creată pentru a realiza o astfel de comparaţie şi
ajută la luarea unei decizii prin evaluarea unei expresii logice [1, 3].
Sintaxă: IF(expresie logică , [dacă este adevărată expresia atunci acţiune1],[ dacă este
falsă – acţiune2])
Se evaluează expresia logică. Dacă este adevărată se va lansa
acţiunea1, iar în caz contrar acţiunea2. Prin acţiune se înţelege calculul unei
funcţii cu răspuns de tip numeric sau text, dată calendaristică, sau rezultat
logic sau poate fi chiar un nou if(). Acţiunile sunt opţionale (aceasta este
marcată prin parantezele pătrate, este o convenţie, nu se folosesc în scrierea
efectivă). Dacă nu se scriu acţiunile dar se pun virgulele atunci funcţia if
întoarce 0.
Observaţie: Dacă setările regionale sunt pentru limba română, atunci
virgulele sunt înlocuite cu punct şi virgulă în definirea funcţiei if() (această
observaţie este valabilă pentru funcţiile care acceptă mai multe argumente).
Putem folosi ca acţiune un nou if (aceasta se numeşte imbricare). Numărul
maxim acceptat de imbricări este 64. Dacă dorim mai multe grupări există
funcţia Lookup care permite utilizarea vectorilor în definirea limitelor
categoriilor.
Se poate deduce uşor numărul de funcţii if imbricate pentru conversia
unei variabile într-un număr de forme categoriale. Dacă notăm numărul de
categorii cu C atunci numărul de funcţii if necesare este C-1 (deoarece ultima
funcţie va putea avea 2 decizii).

Transformarea unei variabile numerice în formă categorială | 1


Exemple:
Dorim să creăm o coloană adiacentă coloanei nota (valori întregi) în
care să scriem promovat pentru notă mai mare sau egală cu 5, respectiv,
restanţă pentru notă mai mică decât 5. Dacă nota este în coloana A atunci în
celula B1 vom scrie: =if(A1>=5,”promovat”,”restanţă”). Observăm că avem 2
valori categoriale şi folosim doar o funcţie if (C=2, deci numărul de funcţii
este 2-1=1).
Complicăm problema şi introducem noţiunea ”calificat” dacă nota
este 9 sau 10. Astfel funcţia de conversie se modifică după cum urmează:
=if(A2>8,"calificat",if(A2>=5,"promovat","restanţă")). Observăm că am avut 3
categorii şi am folosit 2 funcţii if().

Funcţia Lookup()
Dacă avem un număr de 6 categorii deja lucrul cu funcţii if() imbricate
devine greoi. Pentru a rezolva această cerinţă s-a creat o nouă funcţie numită
Lookup().
Sintaxă: LOOKUP(valoare căutată, vector(sau set celule) ce prezintă
limitele numerice ale grupelor, [vector (sau set celule) cu atribute]) – este de
aşteptat ca tipul (linie sau coloană) şi dimensiunea vectorului sau setului de
celule ce prezintă grupele să fie identice cu tipul şi dimensiunea vectorului
sau matricei ce prezintă atributele (numele categoriilor) [1, 2, 3].
Funcţia Lookup() încadrează valoarea numerică căutată în grupa
corespunzătoare din prima coloană a vectorului (sau setul de celule) de
definiţie şi afişează atributul corespunzător grupei din coloana a doua a
vectorului de definiţie (sau setului de celule de definiţie a categoriei).
Vectorul este format dintr-o înşiruire de valori de forma:
{"E","D","C","B","A"} sau {5,8,2} de exemplu. Elementele sunt despărțite
prin virgulă şi întreg vectorul este încadrat între acolade. Se poate folosi în
loc de un vector un set de celule definit pe coloană sau rând.
Clasificarea se face după limitele în care se încadrează valoarea
studiată. Dacă valoarea căutată este mai mică decât limita minimă
menţionată atunci se întoarce mesajul de eroare #N/A. Astfel trebuie să
cunoaştem valoarea minimă. Orice grupă este definită de valoarea minimă
posibil de atins respectiv valoarea maximă ce nu poate fi atinsă. Aceasta se
explică tocmai prin faptul că grupele nu au puncte comune, neexistând
varianta de indecizie în clasificare. O valoare nu poate aparţine decât unui
singur interval. Astfel valoarea maximă neatinsă în prima grupă va fi
cuprinsă în grupa a doua ca valoare minimă de început.

Exemplu:
Dorim să realizăm o conversie a notei în calificativ după cum este
prezentat în tabelul de mai jos.
Avem 5 calificative. Considerăm că nota minimă este 1.

2 | Transformarea unei variabile numerice în formă categorială


Ţinând cont de regula de încadrare (valoarea căutată trebuie să fie mai
mare sau egală cu minimul grupei şi mai mică ca maximul grupei) va trebui
să definim corespondenţa conform coloanelor A şi B din figura alăturată.
Tabelul 5-1. Corespondenţă calificative
nota calificativ
<5 E
5 D
6 C
7-8 B
9-10 A

Figura 5-1. Funcţia Lookup()

Astfel calificativul E va fi alocat valorilor mai mari sau egale cu 1 dar


mai mici ca 5 (aşa cum este prezentat în primul tabel).
Dorim să transformăm coloana numerică C în formă categorială
reprezentând calificative folosind destinaţia în coloana F. Accesând setul de
corespondenţe creat în celule din coloanele A şi B, în F2 vom scrie
=LOOKUP(C2,A$2:A$6,B$2:B$6) sau mai potrivit ar fi, mai întâi, să verificăm
tipul de dată din celulă: =IF(ISNUMBER(C2), LOOKUP(C2,A$2:A$6,B$2:B$6),
"absent"). Astfel, nu va apare mesajul #N/A în cazul întâlnirii unei valori text
(ex. abs).
Funcţia ISNUMBER(valoare), verifică tipul valorii (valoarea poate fi o
celulă, sau funcţie) şi întoarce True pentru tip numeric respectiv False în caz
contrar.
Observaţi utilizarea adresării absolute pentru a bloca vectorul coloană
la aplicarea metodei Autofill. Să luăm prima valoare, care este 7. Este mai
mare sau egală cu 7 şi mai mică decât 9 – astfel, i se va atribui prin funcţia

Transformarea unei variabile numerice în formă categorială | 3


Lookup() atributul ”B”. Oricărei valori mai mari sau egale cu 9 îi va
corespunde calificativul A. Deci iată maximul nu este neapărat cunoscut.
Puteam utiliza scrierea folosind vectori (forma prezentată mai jos):
=LOOKUP(C2,{1,5,6,7,9},{"E","D","C","B","A"}) sau folosind o
singură matrice:
=LOOKUP(C2,{1,5,6,7,9;"E","D","C","B","A"})
În cadrul matricei virgula marchează trecerea la următoarea coloană iar
punct şi virgulă marchează trecerea la următorul rând.
Este la alegerea utilizatorului forma de scriere a comenzii (vector, matrice, set
de celule) – Avantajul utilizării setului de celule constă în faptul că
schimbarea unei valori din celula de definiţie a clasificării va avea efect global
asupra întregului set de date convertit. Se va schimba practic întreaga
conversie prin modificarea setului de definiţie a categoriilor.

EXERCIŢII

1. Generaţi un set de 100 valori numerice întregi reprezentând note de


la 1 la 10 inclusiv. Creaţi o nouă coloană în care să aveţi echivalentul
în calificativ al fiecărei note, conform cu valorile atribuite
corespunzător, prezentate mai jos:

Tabelul 5-2. Corespondenţe


nota calificativ
<5 Insuficient
5-6 Suficient Rezolvaţi exerciţiul folosind funcţia if() apoi
7-8 Bine folosind funcţia Lookup().
9-10 FBine

În caz real există şi absenţe în cadrul unui examen. Înseraţi, la


întâmplare, 10 absenţe în setul creat anterior. Observaţi codul de eroare
apărut (#N/A) pentru funcţia Lookup() respectiv categoria greşit asociată în
cazul folosirii funcţiei If(). Cum putem rezolva problema, astfel încât, acolo
unde persoana este absentă, să apară scris, absent?
Observaţie: veţi folosi funcţia ISNUMBER(valoare) ce verifică tipul datei.
Puteţi folosi un nou if() care să verifice dacă informaţia din celulă este de tip
numeric. Dacă este număr, se va face conversia, în caz contrar, se va scrie
absent.

2. Introduceţi valorile prezentate în tabelul alăturat şi calculaţi valoarea


IMC (IMC=Greutate/Inălţine^2). Creaţi o nouă coloană cu statusul
ponderal, conform tabelei de echivalenţă (tabelul 5-4), prin cele două
metode folosind: if() şi lookup().

4 | Transformarea unei variabile numerice în formă categorială


Tabelul 5-3. Date antropometrice

nr. Greutate(Kg) Inalţime(m) 12 65 1.9


1 67 1.8 13 111 2
2 35 1.5 14 53 1.9
3 67 1.8 15 120 1.6
4 108 2 16 35 1.4
5 89 1.7 17 95 1.5

6 105 1.9 18 104 1.7


7 90 1.5 19 70 2.1
20 97 1.8
8 84 1.7
21 101 1.8
9 47 1.4
22 40 1.4
10 106 1.9
23 77 2.1
11 76 1.7

Tabelul 5-4. Tabelul de echivalenţă


IMC < 18,5 (subponderal)
IMC = 18,5 – 24,9 (normoponderal)
Calculaţi de asemenea numărul de
IMC = 25 – 29,9 (supraponderal) cazuri pe fiecare grupă ce exprimă
IMC 30 – 34,9 (obez grad 1) statusul ponderal.
IMC 35 – 39,9 (obez grad 2)
IMC ≥ 40 (obez grad 3)

3. În evaluarea funcţiei renale se foloseşte valoarea clearance-ului de


creatinină. În tabelul de mai jos sunt 29 de pacienţi. Completaţi în
Excel (prin cele 2 metode cunoscute) o nouă coloană, în care să
prezentaţi pentru fiecare pacient evaluarea funcţiei renale, conform
tabelului de echivalenţă.

Tabelul 5-5. Echivalenţe


Cl-Cr Evaluare
[90-120] Normal
[50-90) Stadiu 1
[30-50) Stadiu 2
[15-30) Stadiu 3
< 15 IRT- insuficienţă renală terminală

Transformarea unei variabile numerice în formă categorială | 5


Tabelul 5-6.

Pacient ClCr Stadiu


1 118
2 82
3 92
4 95
5 7
6 64
7 39
8 106
9 58
10 92
11 30
12 116
13 76
14 26
15 23
16 104
17 13
18 34
19 9
20 22
21 114
22 1
23 39
24 51
25 9
26 58
27 30
28 12
29 40

6 | Transformarea unei variabile numerice în formă categorială


Aflaţi numărul de pacienţi, pentru fiecare grupă definită de coloana evaluare.

4. Presupunem că avem următorul set de date (15 date pe care le


introduceţi în foaia de calcul, conform coloanei C), în care este prezentată
tensiunea arterială (cu cele 2 componente TAS respectiv TAD). Acestea
sunt introduse în aceeaşi celulă, despărţite de „/”. Găsiţi o metodă de
creare a două coloane cu valorile TAS respectiv TAD.

Figura 5-2. Set de date

Observaţie:
Puteţi folosi următoarele funcţii specifice lucrului cu şiruri de caractere:
Left(celulă,număr caractere) – extrage începând din stânga un anumit număr
de caractere specificat.
Find(caracter căutat, celulă) – se caută poziţia unui caracter din celula
specificată. Funcţia va întoarce un număr ce exprimă poziţia pe care se
află caracterul specificat (poziţia 1 defineşte primul caracter din stânga).
Mid(celulă, start poziţie, lungime) – se extrage un şir de caractere, de o anumită
lungime, începând cu caracterul de pe poziţia definită de start poziţie, din
celula definită.
În coloana D veţi folosi funcţiile: =LEFT(C2,FIND("/",C2)-1) , sau
=MID(C2,1,FIND("/",C2)-1).
În coloana E veţi folosi funcţiile: =MID(C2,FIND("/",C2)+1,3).

Bibliografie | 7

S-ar putea să vă placă și