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.
			
			
									
						
										
						Kodning af variabel
Moderator: Lodahl
Re: Kodning af variabel
Du skal lave en brugerdefineret funkion, hvilket er en makro. Her er koden
På 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
			
			
									
						
							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
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
			
						Re: Kodning af variabel
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
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
			
			
									
						
							=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   10Lopslag 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
			
						Emne: Re: Kodning af variabel
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
			
			
									
						
										
						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
Du har ret i, at der er en fejl, der mangler dog ikke to linier, men linienHK 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
Code: Select all
 elseif n<= 39 Code: Select all
 elseif n<= 29 Og så er der en stavefejl i linienVæ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.
Code: Select all
 elseif n <= HigestCode: Select all
elseif n <= HighestBeklager fejlene!
lubuntu 14.04 LibreOffice 4.1.6.2