Kodning af variabel

Brugerhjælp og support til regneark i LibreOffice Calc

Moderator: Lodahl

Post Reply
morseper
Posts: 1
Joined: 30. Oct 2007 08:56

Kodning af variabel

Post by morseper »

Jeg vil gerne vide, om der i OpenOffice Calc er en funktion til kodning af en ny variabel.
Mit problem er, at jeg har en kolonne med værdier fra 1 - 2000. Jeg vil nu gerne have genereret en ny kolonne, hvor der angives bestemte værdier for bestemte intervaller i den foregående kolonne. Fx hvis der er en værdi mellem 1 og 9 skulle den nye kolonne gerne opnå værdien 1.

Jeg anvender ofte en ligende funktion i mit statistikprogram, og jeg vedlægger derfor min syntax derfra for at illustrerer, hvad det er jeg gerne vil opnå.

RECODE
Boligerialt
(Lowest thru 9=1) (10 thru 19=2) (20 thru 29=3) (30 thru 49=4)
(50 thru 99=5) (100 thru 149=6) (150 thru 299=7) (300 thru 499=8)
(500 thru 999=9) (1000 thru Highest=10) (ELSE=SYSMIS) INTO
Boligerialt_kat .

Håber, at nogen kan hjælpe.
lapont
Posts: 91
Joined: 17. Sep 2004 11:37
Location: Nordjylland

Re: Kodning af variabel

Post by lapont »

Du skal lave en brugerdefineret funkion, hvilket er en makro. Her er koden

Code: Select all

Function BoligKategori(n As Integer) As Integer
	Lowest = 1
	Highest = 2000
	SYSMIS = -1
	if (Lowest <= n) and (n <= 9) then
		BoligKategori = 1
	elseif n <= 19  then
		BoligKategori = 2
	elseif n <= 39  then
		BoligKategori = 3
	elseif n <= 49  then
		BoligKategori = 4
	elseif n <= 99  then
		BoligKategori = 5
	elseif n <= 149  then
		BoligKategori = 6
	elseif n <= 299  then
		BoligKategori = 7
	elseif n <= 499  then
		BoligKategori = 8
	elseif n <= 999  then
		BoligKategori = 9
	elseif n <= Higest  then
		BoligKategori = 10
	else
		BoligKategori = SYSMIS
	endif
End Function
http://da.openoffice.org/about-documentation.html kan du finde en vejledningen: ' Start med makroer'.

Hvis tallene 1-2000 står i kolonne A og det første står i A1 så indsætter du fomlen =BoligKategori(a1) feltet B1 og trækkrt formlen ned i resten af felterne i kolonne B
lubuntu 14.04 LibreOffice 4.1.6.2
Torkil
Posts: 32
Joined: 22. Jan 2005 18:24
Location: Slagelse

Re: Kodning af variabel

Post by Torkil »

En anden mulighed er at bruge funktionen Lopslag() eller Vopslag() og lægge opslagstabellen i et andet ark

=LOPSLAG(Opslagsværdi; Matrix; Indeks; Sorteringsrækkefølge)

I dit tilfælde skal du være særlig opmærksom på den sidste parameter og simikolonet før den, idet den bestemmer om dine data er sorterede eller ej. Du laver da to kolonner som vist

Code: Select all

   9    1
  19    2
  39    3
...
1000   10
Prøv dig frem med grænseværdier of værdi for sorteringsrækkefølge.

Lopslag s metoden er ikke helt så smart som makroen, men er nemmere at rette i og du kan evt lave andre funktioner, der retter værdierne til i opslagstabellen.
med venlig hilsen
Torkil Bladt, Slagelse
HK
Posts: 44
Joined: 14. Jan 2007 10:03

Emne: Re: Kodning af variabel

Post by HK »

Der må være fejl i den viste brugerdefinerede funktion (BoligKategori),
blandt andet som følge af, at der mangler to linier:
elseif n <=29 then
Boligkategori = 3
Værdier større end eller lig med 30 og mindre end eller lig med 39 giver 3 og værdier større end eller lig med 1000 giver -1.

HK
lapont
Posts: 91
Joined: 17. Sep 2004 11:37
Location: Nordjylland

Re: Emne: Re: Kodning af variabel

Post by lapont »

HK wrote:Der må være fejl i den viste brugerdefinerede funktion (BoligKategori),
blandt andet som følge af, at der mangler to linier:
elseif n <=29 then
Boligkategori = 3
Du har ret i, at der er en fejl, der mangler dog ikke to linier, men linien

Code: Select all

 elseif n<= 39 
skal rettes til

Code: Select all

 elseif n<= 29 
Værdier større end eller lig med 30 og mindre end eller lig med 39 giver 3 og værdier større end eller lig med 1000 giver -1.
Og så er der en stavefejl i linien

Code: Select all

 elseif n <= Higest
der skulle stå

Code: Select all

elseif n <= Highest
så vil værdier mellem 1000 og 2000 give 10
Beklager fejlene!
lubuntu 14.04 LibreOffice 4.1.6.2
Post Reply