Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Använd ifelse() för att testa om micr är större än 60 men mindre än 62. När uttrycket är sant ska 1 returneras, annars 0. Lägg till resultatet i stocks som kolumnen micr_buy.
  • Använd ifelse() för att testa om apple är större än 117. Det returnerade värdet ska vara kolumnen date om TRUE, annars NA.
  • Skriv ut stocks. Lägg märke till att date har blivit numerisk! ifelse() tar bort datumets attribut innan det returneras, vilket gör att det blir numeriskt.
  • Tilldela kolumnen apple_date klassen "Date" med hjälp av class().
  • Skriv ut stocks igen.

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
___
Redigera och kör kod