ifelse()
ifelse()는 알아 두면 아주 유용한 함수예요. 한 줄로 if 문을 만들 수 있을 뿐 아니라, 전체 벡터에도 작동해요!
주가 벡터가 있다고 해 보죠. apple > 110일 때마다 "Buy!"를, 그렇지 않으면 "Do nothing!"을 반환하고 싶다면 어떨까요? 간단한 if 문만으로는 해결하기 어려워요. 하지만 ifelse()를 쓰면 다음과 같이 할 수 있어요:
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()는 test를 평가해 논리 벡터를 만들고, 그 값이 TRUE인 위치에는 yes의 값을, FALSE인 위치에는 no의 값을 채워 넣어요.
stocks 데이터 프레임이 준비되어 있어요.
이 연습은 강의의 일부입니다
금융을 위한 R 중급
연습 안내
ifelse()로micr가60초과이면서62미만인지 테스트하세요. 참이면1, 거짓이면0을 반환하고, 결과를stocks에micr_buy열로 추가하세요.ifelse()로apple이117보다 큰지 테스트하세요.TRUE이면date열의 값을, 그렇지 않으면NA를 반환해야 해요.stocks를 출력하세요.date가 숫자로 바뀌었죠!ifelse()는 반환 전에 날짜의 속성(attribute)을 제거하기 때문에 숫자로 변환돼요.apple_date열의class()를"Date"로 지정하세요.- 다시
stocks를 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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
___