Page 1 of 1

Kodning af variabel

Posted: 30. Oct 2007 09:19
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.

Re: Kodning af variabel

Posted: 30. Oct 2007 21:46
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

Re: Kodning af variabel

Posted: 30. Oct 2007 22:07
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

Emne: Re: Kodning af variabel

Posted: 2. Nov 2007 07:37
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

Re: Emne: Re: Kodning af variabel

Posted: 2. Nov 2007 11:44
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!