ifelse()
En mycket användbar funktion att känna till är ifelse(). Den skapar ett if-uttryck på en enda kodrad och fungerar dessutom på hela vektorer!
Tänk dig att du har en vektor med aktiekurser. Vad händer om du vill returnera "Buy!" varje gång apple > 110, och "Do nothing!" annars? Ett vanligt if-uttryck räcker inte för att lösa det problemet. Med ifelse() kan du däremot skriva:
apple
[1] 109.49 109.90 109.11 109.95 111.03 112.12
ifelse(test = apple > 110, yes = "Buy!", no = "Do nothing!")
[1] "Do nothing!" "Do nothing!" "Do nothing!" "Do nothing!" "Buy!"
[6] "Buy!"
ifelse() utvärderar test för att få en logisk vektor. Där vektorn är TRUE ersätts värdet med det som anges i yes, och där den är FALSE ersätts det med no.
Dataframe:n stocks finns tillgänglig för dig att använda.
Den här övningen är en del av kursen
R för finans – fortsättningskurs
Övningsinstruktioner
- Använd
ifelse()för att testa ommicrär större än60men mindre än62. När uttrycket är sant ska1returneras, annars0. Lägg till resultatet istockssom kolumnenmicr_buy. - Använd
ifelse()för att testa omappleär större än117. Det returnerade värdet ska vara kolumnendateomTRUE, annarsNA. - Skriv ut
stocks. Lägg märke till attdatehar blivit numerisk!ifelse()tar bort datumets attribut innan det returneras, vilket gör att det blir numeriskt. - Tilldela kolumnen
apple_dateklassen"Date"med hjälp avclass(). - Skriv ut
stocksigen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Microsoft test
stocks$micr_buy <- ifelse(test = ___, yes = ___, no = ___)
# Apple test
stocks$apple_date <- ifelse(test = ___, yes = stocks$date, no = NA)
# Print stocks
___
# Change the class() of apple_date.
class(___) <- ___
# Print stocks again
___