Waardetoewijzingen – Functies

Deze pagina is een aanvulling op de reeds beschreven basisfunctionaliteit in het topic Waardetoewijzingen. Als u nog niet echt vertrouwd bent met het begrip Waardetoewijzingen, kunt u ook de informatie in dit topic raadplegen.

Disclaimer: Met een Professional User Licentie kunt u alle op deze pagina beschreven functies gebruiken. U hebt echter een uitgebreide supportovereenkomst (SLA – Service Level Agreement) nodig, als u onze hulp nodig heeft bij de implementatie. Voor complexe waardetoewijzingen voor wetenschappelijk gebruik wordt geen Survalyzer productsupport verleend. Voor vragen of informatie omtrent een SLA kunt u te allen tijde contact met ons salesteam opnemen.

Math.js functies

Het element Waardetoewijzing is gebaseerd op math.js. Het gaat hier om kant-en-klare functies die in de waardetoewijzingen kunnen worden gebruikt. Als u een functie in de volgende opsomming mist, kunt u de math.js functiereferentie voor meer functies doorzoeken: https://mathjs.org/docs/reference/functions.html

Rekenkunde

FunctieOmschrijvingVoorbeeldResultaat
+telt numerieke waarden opsum=3+25
trekt numerieke waarden van elkaar afdifference=3-21
*vermenigvuldigt numerieke waardenproduct=3*26
/deelt numerieke waarden door elkaarquotient=3/21.5
%berekent de modulus (restwaarde van deling)modulus=3%21
^berekent het kwadraat van de numerieke waardesquare=3^29
sqrtberekent de vierkantswortelresult=sqrt(9)3
absberekent de absolute waarderesult1=abs(-5)
result2=abs(5)
5
5
roundrondt getallen op decimalen afresult=round(2.35,1)2.4

Statistiek

Download het JSON-bestand van de statistiekreferentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldResultaat
sumberekent de somsum(2,3,5)10
meanberekent het rekenkundig gemiddeldemean(2,3,5)3.3333…
medianberekent de mediaanmedian(2,3,5)3
stdberekent de standaarddeviatiestd(2,3,5)1.5275…
varianceberekent de variantievariance(2,3,5)2.3333…
minberekent de minimumwaardemin(2,3,5)2
maxberekent de maximumwaardemax(2,3,5)5

Randomisatie

Download het JSON-bestand van de randomisatiereferentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête-referentie
randomstuurt een reëel getal terug tussen min (inclusief) en max (exclusief)random(min,max)
randomIntstuurt een geheel getal terug tussen min (inclusief) en max (exclusief)randomInt(min,max)Sectie 2 van randomisatie-enquête
pickRandomstuurt een willekeurig gekozen element uit de gegeven lijst terugpickRandom([var1,var2,var3])Sectie 1 van randomisatie-enquête
shuffleverwisselt de waarden van een matrixshuffle([var1,var2,var3])
shuffleChoicesWithinBlocksorteert de antwoordopties willekeurig binnen opgegeven bereikenshuffleChoicesWithinBlock("q1",[1,2,3],[4],[5,6])
shuffleChoicesByBlocksorteert de opgegeven bereiken willekeurig in antwoordoptiesshuffleChoicesByBlock("q1",[1,2,3],[4],[5,6])

Conditionele instructies (if-then-else)

De basissyntaxis van een conditionele instructie is:
ALS conditie ? DAN actie : ANDERS actie
– het vraagteken en de dubbele punt zijn verplicht
– er kan slechts één DAN-actie en één ANDERS-actie worden gedefinieerd
– in het geval van geen actie gebruik je het woord null
– de conditie kan logische operatoren and en or en haakjes bevatten
– twee of meer conditionele instructies kunnen genest worden (komt overeen met elseif)

VoorbeeldOmschrijvingIngangUitgang
q1==1 ? var1=1 : nullals vraagvariabele q1 de waarde 1 heeft (bijv. eerste antwoord van vraag met één antwoord is gekozen), dan wijs de waarde 1 toe aan de aangepaste variabele var1 of anders doe nietsq1=1
q1=2
var1=1
var1=var1
q2>1 ? var2=1 : var2=0als vraagvariabele q2 een waarde groter dan 1 heeft, dan wijs de waarde 1 toe aan aangepaste variabele var2 of anders wijs de waarde 0 toe aan aangepaste variabele var2q2=1
q2=2
q2=3
var2=0
var2=1
var2=1
age>=18 and age<=65 ? counter=counter+1 : nullals de vraagvariabele age een waarde tussen 18 en 65 heeft, dan voeg 1 toe aan de aangepaste variabele counter of anders doe nietsage=15
age=45
age=75
counter=counter
counter=counter+1
counter=counter
(zip>=1000 and zip<=1007) or (zip>=1010 and zip<=1019) ? town="Lausanne" : nullals variabele zip tussen 1000 en 1007 of tussen 1010 en 1019 ligt, dan wijs “Lausanne” toe aan variabele town of anders doe nietszip=1008
zip=1018
zip=8005
town=town
town=”Lausanne”
town=town
equals(email1,email2)==true ? mailcheck=1 : mailcheck=0als beide tekstregels van email1 en email2 hetzelfde zijn, dan wijs 1 toe aan mailcheck of anders wijs 0 toe aan mailcheckemail1=”a@bc.de”
email2=”a@bc.de”

email1=”a@bc.de”
email2=”k@lm.no”
mailcheck=1


mailcheck=0
age<18 ? group=1 : age<30 ? group=2 : age<50 ? group=3 : age<=65 ? group=4 : group=5geneste conditionele instructies: als age<18 dan group=1 anders als age<30 dan group=2 anders als age<50 dan group=3 anders als age<=65 dan group=4 anders group=5age=5
age=25
age=45
age=65
age=85
group=1
group=2
group=3
group=4
group=5

Teksten

Download het JSON-bestand van de tekstreferentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldResultaat
concatvoegt teksten samenconcat("8005"," ","Zürich")“8005 Zürich”
equalsvergelijkt teksten en retourneert hetzij “true” of “false”equals("8005","Zürich")false
counttelt het aantal karakters van een tekstcount("8005 Zürich")11
[start:stop]stuurt een gedeelte van de tekst terug, beginnend bij “start” en eindigend bij “stop” (aantal karakters)"8005 Zürich"[1:4]“8005”
indexOfstelt de startpositie van een zoektekst vast (let op: het eerste karakter is positie 0)indexOf("8005 Zürich","Zürich")
indexOf("8005 Zürich","Utrecht")
5

-1
subsetvervangt karakters op gedefinieerde positiesubset("8000 Zurich",index(4:7),"5 Zü")“8005 Zürich”

Datum & Tijd

Download het JSON-bestand van de datatransformatie referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête-referentie
dateconverteert een tekst (variabele) naar een datum (variabele)date("13/02/2024")
number2dateconverteert een Unix-tijdstempel naar een datumnumber2date(varTimestamp)
dateFormatformatteert een datum (incl. tijd) volgens een vooraf gedefinieerd schema (gegevenstype tekst)dateFormat(varDate, "DD/MM/YYYY HH:mm:ss")
date2numberretourneert de Unix-tijdstempel (aantal milliseconden) voor een bepaalde datumdate2number(varDate)Sectie 1 van datatransformatie- enquête
datetime2numberretourneert de Unix-tijdstempel (aantal milliseconden) voor een bepaalde tijd (incl. een datum)datetime2number(varDateTime)
todayretourneert de huidige datum en tijd (gegevenstype datum)today()Sectie 1 van datatransformatie- enquête
addDaysvoegt aantal opgegeven dagen toe aan een gegeven datum (gegevenstype datum)addDays(today(),-7)
getRunTimeInSecgeeft het aantal seconden terug sinds het begin van het interviewgetRunTimeInSec()

Datatransformatie

Download het JSON-bestand van de datatransformatie referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête-referentie
parseNumberretourneert geheel getal omsloten door tekstparseNumber(varText)Sectie 2 van datatransformatie- enquête
parseRealretourneert reëel getal omsloten door tekstparseReal(varText)
convertToStringzet gegeven getal om in tekstconvertToString(varNumber)Sectie 2 van datatransformatie- enquête
binstuurt binaire waarde van getal terug (gegevenstype tekst)bin(varNumber)
hexstuurt hexadecimale waarde van getal terug (gegevenstype tekst)hex(varNumber)
toJSONzet een JSON tekst in een JSON variabele omtoJSON(varText)

Tellers

Download het JSON-bestand van de tellers referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête-referentie
count_startedberekent het aantal interviews met status “Bezig”survey.count_startedSectie 2a van randomisatie- enquête
count_completedberekent het aantal interviews met status “Voltooid”survey.count_completedSectie 2a van randomisatie- enquête
countInterviewsberekent het aantal interviews dat aan gedefinieerde voorwaarde voldoetcountInterviews(customCondition)

voorbeld voor een customCondition:
countInterviews(q1==1 and survey.State=='Completed')
Sectie 1 van tellers-enquête
getCountQuestiongeeft het aantal vragen in de hele enquête teruggetCountQuestion()
getCountVariablegeeft het aantal variabelen in de hele enquête teruggetCountVariable()

Array & Matrix

Download het JSON-bestand van de matrixto referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldResultaat
csvToNumberArrayzet een CSV-tekst in een getallenarray om (gegevenstype matrix)csvToNumberArray('34,34,123,43')[34,34,123,43]
csvToStringArrayzet een CSV-tekst in een tekstenarray om (gegevenstype matrix)csvToStringArray('34, 34, 123 , 43')[“34″,”34″,”123″,”43”]
[dim1,dim2]geeft het element van een matrix op de posities “dim1” en “dim2” terugvarMatrix=[[1,2,3],[3,4,5],[5,6,7],[7,8,9]]
matrixvar[2,3]
5
matrixToFlatArraylevert een ééndimensionale matrix (array) op uit een meerdimensionale matrixvarMatrix=[[1,2,3],[3,4,5],[5,6,7],[7,8,9]]
matrixToFlatArray(varMatrix[1:end,2])
[2,4,6,8]
mapbrengt elke waarde van een matrix in kaart volgens een gedefinieerde aangepaste functievarMatrix=[2,4,6,8]
aangepaste functie die 2 of 6 vervangt door 0:
myFunction(value)= value==2 or value==6 ? 0 : value
na de aangepaste functie:
map(varMatrix,myFunction)
[0,4,0,8]
sortsorteert een arrayvarMatrix=[0,4,0,8]
sort(varMatrix,'asc')
[0,0,4,8]
filterfiltert een array volgens een gedefinieerde aangepaste functievarMatrix=[0,0,4,8]
aangepaste functie die NULL missings en 0-waarden filtert:
myFunction(value)= value!=null and value!=0
na de aangepaste functie:
filter(varMatrix,myFunction)
[4,8]
countbepaalt het aantal elementen in een arrayvarMatrix=[4,8]
count(varMatrix)
2
meanberekent het gemiddelde van de elementen van een arrayvarMatrix=[4,8]
mean(varMatrix)
6
resizewijzigt (verkleint of breidt uit) de grootte van een matrix of een arrayvarMatrix=[4,8]
varMatrix.resize([1])
varMatrix.resize([5])
varMatrix.resize([5],2)

[4]
[4,8,0,0,0]
[4,8,2,2,2]
matrixToHtmlgenereert HTML-tabelcode van een matrixvariabele; uitvoer via plaatshouder in de enquête is een tabelmatrixToHtml(varMatrix)
of met opgemaakte koptekst
matrixToHtml(varMatrix,{firstRowAsHeader:true})
dataSourceToMatrixkrijgt de resultaten van een datasource binnen een rapport en schrijft de resultaten naar een matrixvariabeledataSourceToMatrix(reportID,datasourceID)

Mapping, filteren en foreach-lus met aangepaste functies

Math.js heeft een functie genaamd map die een nieuwe matrix of array maakt van een gegeven matrix of array op basis van een callback-functie. Je kunt dit gebruiken als een foreach-lus zoals hieronder beschreven.
Lees meer over de map-functie in de math.js documentatie.
Je kunt elke callback-functie definiëren die je wilt – laten we ze daarom aangepaste functies noemen. Zorg ervoor dat de aangepaste functie is gedefinieerd voordat je de map-functie aanroept.
Naast de map-functie bestaat er ook een filterfunctie die in principe dezelfde logica gebruikt. In tegenstelling tot de mapping behoudt het filteren bepaalde elementen volgens de aangepaste functie en verwijdert het de anderen.
Als je in plaats daarvan een lus wilt gebruiken die niet noodzakelijkerwijs de matrix of array verandert die wordt gebruikt voor het lussen, kun je werken met de foreach-functie. Je hebt nog steeds een matrix of array nodig om door alle elementen te lussen, maar je kunt eerst een hulparray maken met bijvoorbeeld opgesomde waarden.

VoorbeeldOmschrijvingIngangUitgang
myFunction(x) = x*x

myResult=map(myArray,myFunction)
de aangepaste functie myFunction kwadrateert elke verstrekte waarde; de map-functie geeft myArray door aan myFunction voor het creëren van de nieuwe array myResult met de kwadraten voor elk element van myArraymyArray=[1,2,3]myResult=[1,4,9]
myFilter(x) = x!=null and x!=0

myResult=filter(myArray,myFilter)
de aangepaste functie myFilter controleert voor elke opgegeven waarde of deze niet null en niet 0 is; de filterfunctie geeft myArray door aan myFilter om lege en 0 waarden eruit te filteren en alle andere waarden in de nieuwe array myResult te houdenmyArray=[0,1,2,3,null]myResult=[1,2,3]
myFunction(x) = equals(q1,getFrom(x,'zip')) ? getFrom(x,'town') : null

myArray=matrixToFlatArray(ziptownlist)
myResult=map(myArray,myFunction)

nullFilter(x) = x!=null

myTown=filter(myResult,nullFilter)[1]
myFunction is een opzoekfunctie die door de ziptownlist (JSON geconverteerd naar platte array) loopt en alle lijstwaarden vergelijkt met het antwoord van q1; myResult behoudt de overeenkomende waarde en myTown retourneert het enige overgebleven element na gebruik van het nullFilter.q1=”8000″

ziptownlist=[
{“zip”:”1000″, “town”:”Lausanne”},
{“zip”:”1200″, “town”:”Genève”},
{“zip”:”3000″, “town”:”Bern”},
{“zip”:”4000″, “town”:”Basel”},
{“zip”:”8000″, “town”:”Zürich”}]
myResult=[null,null,null,null,”Zürich”]

myTown=”Zürich”
auxiliaryArray=range(1,20)

myFunction(x) = sum=sum+x

sum=0
foreach(auxiliaryArray,myFunction)
auxiliaryArray is gemaakt om 20 elementen van 1 tot 20 te hebben; myFunction telt de getallen 1 tot 20 op met behulp van een foreach-lussum=210

Elementbesturing enquête

Download het JSON-bestand van de besturingselementen referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête- referentie
setSurveyFieldsReadOnlyzet tekstvelden of meerkeuze selectievakjes in alleen-lezen modussetSurveyFieldsReadOnly([VariableName])
setSurveyFieldsEditablezet de alleen-lezen modus terugsetSurveyFieldsEditable([VariableName])
setSectionOrderstelt de weergavevolgorde van de volgende secties insetSectionOrder(["Section C","Section A","Section B"])
hide (back button)verbergt de Vorige-knopBackButton("hide")Sectie 2 van besturings-enquête
hide (next button)verbergt de Volgende- knop gedurende een bepaald aantal secondenNextButton("hide",5)Sectie 1 van besturings-enquête
click (next button)klikt automatisch op de Volgende-knop na een bepaald aantal secondenNextButton("click",5)Sectie 1 van besturings-enquête
hideandclick (next button)verbergt de Volgende-knop gedurende een bepaald aantal seconden en klikt er dan automatisch opNextButton("hideandclick",5)Sectie 1 van besturings-enquête

Speciale functies

Download het JSON -bestand van gebruikersfuncties en de Als-Dan-Anders referentie-enquête en importeer het in uw workspace.

FunctieOmschrijvingVoorbeeldEnquête-referentie
isNullOrUndefined
isNull
isUndefined
wordt in voorwaarden gebruikt om te controleren of een variabele leeg of niet gedefinieerd isisNullOrUndefined(varText)
isNull(varText)
isUndefined(varText)
gebruikers-functie en Als-Dan-Anders referentie-enquête
list functionverbergt niet-geselecteerde antwoorden van een lijst in vervolgvragenlist(choice) = answer(concat('brand_',choice.code)) == 1 ? true : false
setChoicesVisibility('bestbrand',list)
JSON van lijstfunctie referentie-enquête
getSurveyLinkgenereert een persoonlijke link voor een bepaalde enquêtelink=getSurveyLink(123)JSON van enquête-koppeling referentie-enquête
returngeeft de waarde van een bepaalde variabele terug als eindresultaat van de waardetoekenningreturn(var)
FunctieOmschrijvingVoorbeeldResultaat
getFromretourneert de inhoud van een JSON-variabele (maximaal 2 geneste dimensies); let op de opsommingvarJson = [
{"id":"1","name":"one"},
{"id":"2","name":"two"}
]


getFrom(varJson,'[1]')
getFrom(varJson,'[1].name')
getFrom(varJson[1],'name')






{“id”:”2″,”name”:”two”}
two
one
Updated on April 12, 2024

Article Attachments

Was this article helpful?

Related Articles

Need Support?
Please login to your Survalyzer account and use the "Create Support Request" form.
Login to Survalyzer