ifelse()
Một hàm rất hữu ích bạn nên biết là ifelse(). Hàm này tạo một câu lệnh if chỉ trong 1 dòng mã, và hơn thế nữa, nó hoạt động trên cả vector!
Giả sử bạn có một vector giá cổ phiếu. Nếu bạn muốn trả về "Buy!" mỗi khi apple > 110, và "Do nothing!" trong các trường hợp khác thì sao? Một câu lệnh if đơn giản sẽ không đủ để giải bài này. Tuy nhiên, với ifelse() bạn có thể làm như sau:
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() đánh giá test để tạo ra một vector logic, và tại những vị trí vector logic là TRUE thì TRUE sẽ được thay bằng giá trị trong yes. Tương tự, FALSE được thay bằng no.
Data frame stocks đã sẵn sàng để bạn sử dụng.
Bài tập này là một phần của khóa học
R trung cấp cho Tài chính
Hướng dẫn bài tập
- Dùng
ifelse()để kiểm tramicrcó lớn hơn60nhưng nhỏ hơn62không. Nếu đúng thì trả về1, nếu sai thì trả về0. Thêm kết quả vàostocksdưới dạng cộtmicr_buy. - Dùng
ifelse()để kiểm traapplecó lớn hơn117không. Giá trị trả về nên là cộtdatenếuTRUE, vàNAnếu không. - In
stocks.dateđã trở thành số!ifelse()loại bỏ thuộc tính của date trước khi trả về nên nó trở thành số. - Gán cho cột
apple_dateclass()là"Date". - In
stockslần nữa.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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
___