Làm cách nào để viết câu lệnh if có nhiều điều kiện trong R?

Hàm IF cho phép bạn so sánh logic giữa một giá trị và những gì bạn mong đợi bằng cách kiểm tra một điều kiện và trả về kết quả nếu Đúng hoặc Sai

  • =IF[Điều gì đó là đúng thì hãy làm điều gì đó, nếu không thì hãy làm điều gì đó khác]

Vì vậy, một câu lệnh IF có thể có hai kết quả. Kết quả đầu tiên là nếu so sánh của bạn là Đúng, kết quả thứ hai nếu so sánh của bạn là Sai

Các câu lệnh IF cực kỳ mạnh mẽ và là nền tảng của nhiều mô hình bảng tính, nhưng chúng cũng là nguyên nhân gốc rễ của nhiều vấn đề về bảng tính. Lý tưởng nhất là câu lệnh IF nên áp dụng cho các điều kiện tối thiểu, chẳng hạn như Nam/Nữ, Có/Không/Có thể, v.v., nhưng đôi khi bạn có thể cần đánh giá các tình huống phức tạp hơn yêu cầu lồng* nhiều hơn 3 hàm IF vào nhau

* “Làm tổ” đề cập đến việc thực hành kết hợp nhiều chức năng với nhau trong một công thức

chi tiết kỹ thuật

Sử dụng hàm IF, một trong các hàm logic, để trả về một giá trị nếu điều kiện đúng và giá trị khác nếu điều kiện sai

cú pháp

NẾU[logic_test, value_if_true, [value_if_false]]

Ví dụ

  • =IF[A2>B2,"Vượt ngân sách","OK"]

  • =IF[A2=B2,B4-A4,""]

Tên đối số

Sự miêu tả

kiểm tra logic

[yêu cầu]

Điều kiện bạn muốn kiểm tra

value_if_true

[yêu cầu]

Giá trị mà bạn muốn trả về nếu kết quả của logic_test là TRUE

value_if_false

[không bắt buộc]

Giá trị bạn muốn trả về nếu kết quả của logic_test là FALSE

Nhận xét

Mặc dù Excel sẽ cho phép bạn lồng tối đa 64 hàm IF khác nhau, nhưng bạn không nên làm như vậy. Tại sao?

  • Nhiều câu lệnh IF đòi hỏi rất nhiều suy nghĩ để xây dựng chính xác và đảm bảo rằng logic của chúng có thể tính toán chính xác qua từng điều kiện cho đến khi kết thúc. Nếu bạn không lồng công thức của mình chính xác 100%, thì nó có thể hoạt động trong 75% thời gian, nhưng trả về kết quả không mong muốn trong 25% thời gian. Thật không may, tỷ lệ bạn nắm bắt được 25% là rất mong manh

  • Nhiều câu lệnh IF có thể trở nên cực kỳ khó duy trì, đặc biệt là khi bạn quay lại sau một thời gian và cố gắng tìm hiểu xem bạn hoặc tệ hơn là người khác đang cố gắng làm gì

Nếu bạn thấy mình có một câu lệnh NẾU dường như tiếp tục phát triển không có hồi kết, thì đã đến lúc bạn nên đặt chuột xuống và suy nghĩ lại về chiến lược của mình

Hãy xem cách tạo đúng câu lệnh IF lồng nhau phức tạp bằng cách sử dụng nhiều IF và khi nào cần nhận ra rằng đã đến lúc sử dụng một công cụ khác trong kho vũ khí Excel của bạn

ví dụ

Sau đây là một ví dụ về câu lệnh IF lồng nhau tương đối chuẩn để chuyển đổi điểm kiểm tra của học sinh thành điểm chữ cái tương đương

  • =IF[D2>89,"A",IF[D2>79,"B",IF[D2>69,"C",IF[D2>59,"D","F"]]]]

    Câu lệnh IF lồng nhau phức tạp này tuân theo logic đơn giản

  1. Nếu Điểm bài thi [tại ô D2] lớn hơn 89 thì học sinh đạt điểm A

  2. Nếu Điểm kiểm tra lớn hơn 79, thì học sinh đạt điểm B

  3. Nếu Điểm bài thi lớn hơn 69 thì học sinh đạt điểm C

  4. Nếu Điểm bài thi lớn hơn 59 thì học sinh đạt điểm D

  5. Nếu không thì học sinh bị điểm F

Ví dụ cụ thể này tương đối an toàn vì không có khả năng mối tương quan giữa điểm kiểm tra và điểm chữ cái sẽ thay đổi, vì vậy nó sẽ không cần bảo trì nhiều. Nhưng đây là một suy nghĩ – điều gì sẽ xảy ra nếu bạn cần phân chia điểm giữa A+, A và A- [v.v.]? . Đây là công thức của bạn sẽ trông như thế nào bây giờ

  • =IF[B2>97,"A+",IF[B2>93,"A",IF[B2>89,"A-",IF[B2>87,"B+",IF[B2>83,"B

Nó vẫn chính xác về mặt chức năng và sẽ hoạt động như mong đợi, nhưng phải mất nhiều thời gian để viết và lâu hơn để kiểm tra để đảm bảo nó hoạt động như bạn muốn. Một vấn đề rõ ràng khác là bạn phải nhập điểm và điểm chữ cái tương đương bằng tay. Khả năng bạn vô tình mắc lỗi đánh máy là bao nhiêu? . Chắc chắn, điều đó là có thể, nhưng bạn có thực sự muốn bản thân phải nỗ lực và mắc những lỗi rất khó phát hiện không?

Mẹo. Mọi hàm trong Excel đều cần có dấu ngoặc đơn mở và đóng []. Excel sẽ cố gắng giúp bạn tìm ra điều gì sẽ xảy ra bằng cách tô màu các phần khác nhau của công thức khi bạn chỉnh sửa nó. Chẳng hạn, nếu bạn chỉnh sửa công thức trên, khi bạn di chuyển con trỏ qua mỗi dấu ngoặc đơn kết thúc “]”, thì dấu ngoặc đơn mở tương ứng của nó sẽ có cùng màu. Điều này có thể đặc biệt hữu ích trong các công thức lồng nhau phức tạp khi bạn đang cố gắng tìm hiểu xem mình có đủ dấu ngoặc đơn khớp hay không

ví dụ bổ sung

Sau đây là một ví dụ rất phổ biến về cách tính Hoa hồng bán hàng dựa trên mức độ đạt được Doanh thu

  • =IF[C9>15000,20%,IF[C9>12500,17. 5%,NẾU[C9>10000,15%,NẾU[C9>7500,12. 5%,NẾU[C9>5000,10%,0]]]]]

Công thức này cho biết NẾU [C9 Lớn hơn 15.000 thì trả về 20%, NẾU [C9 Lớn hơn 12.500 thì trả về 17. 5%, v.v.

Mặc dù nó rất giống với ví dụ về Điểm trước đó, nhưng công thức này là một ví dụ tuyệt vời về mức độ khó khăn khi duy trì các câu lệnh IF lớn – bạn cần làm gì nếu tổ chức của mình quyết định thêm các mức thù lao mới và thậm chí có thể thay đổi đồng đô la hiện tại

Mẹo. Bạn có thể chèn ngắt dòng vào thanh công thức để làm cho các công thức dài dễ đọc hơn. Chỉ cần nhấn ALT+ENTER trước văn bản bạn muốn xuống dòng mới

Dưới đây là một ví dụ về kịch bản hoa hồng với logic không theo thứ tự

Bạn có thể thấy những gì sai? . Con đường nào đang đi đây? . Nhưng tại sao đó phải là một vấn đề lớn như vậy? . Giả sử bạn có doanh thu $12.500 – câu lệnh IF sẽ trả lại 10% vì nó lớn hơn $5.000 và nó sẽ dừng ở đó. Điều này có thể cực kỳ rắc rối vì trong nhiều tình huống, các loại lỗi này không được chú ý cho đến khi chúng có tác động tiêu cực. Vì vậy, biết rằng có một số cạm bẫy nghiêm trọng với các câu lệnh IF lồng nhau phức tạp, bạn có thể làm gì? . Sử dụng VLOOKUP, trước tiên bạn cần tạo bảng tham chiếu

  • =VLOOKUP[C2,C5. D17,2,TRUE]

Công thức này cho biết hãy tìm giá trị trong C2 trong phạm vi C5. C17. Nếu giá trị được tìm thấy, thì trả về giá trị tương ứng từ cùng một hàng trong cột D

  • =VLOOKUP[B9,B2. C6,2,TRUE]

Tương tự, công thức này tìm kiếm giá trị trong ô B9 trong phạm vi B2. B22. Nếu giá trị được tìm thấy, thì trả về giá trị tương ứng từ cùng một hàng trong cột C

Ghi chú. Cả hai hàm VLOOKUP này đều sử dụng đối số TRUE ở cuối công thức, nghĩa là chúng tôi muốn chúng tìm kiếm một kết quả gần đúng. Nói cách khác, nó sẽ khớp với các giá trị chính xác trong bảng tra cứu, cũng như bất kỳ giá trị nào nằm giữa chúng. Trong trường hợp này, các bảng tra cứu cần được sắp xếp theo thứ tự Tăng dần, từ nhỏ nhất đến lớn nhất

VLOOKUP được trình bày chi tiết hơn ở đây, nhưng điều này chắc chắn đơn giản hơn nhiều so với câu lệnh IF lồng nhau phức tạp gồm 12 cấp độ. Ngoài ra còn có những lợi ích khác ít rõ ràng hơn

  • Các bảng tham chiếu VLOOKUP được hiển thị rõ ràng và dễ nhìn

  • Giá trị bảng có thể dễ dàng cập nhật và bạn không bao giờ phải chạm vào công thức nếu điều kiện của bạn thay đổi

  • Nếu bạn không muốn mọi người nhìn thấy hoặc can thiệp vào bảng tham chiếu của mình, chỉ cần đặt nó trên một trang tính khác

Bạn có biết không?

Hiện đã có một hàm IFS có thể thay thế nhiều câu lệnh IF lồng nhau bằng một hàm duy nhất. Vì vậy, thay vì ví dụ điểm ban đầu của chúng tôi, có 4 hàm IF lồng nhau

  • =IF[D2>89,"A",IF[D2>79,"B",IF[D2>69,"C",IF[D2>59,"D","F"]]]]

Nó có thể được thực hiện đơn giản hơn nhiều với một chức năng IFS duy nhất

  • =IFS[D2>89,"A",D2>79,"B",D2>69,"C",D2>59,"D",TRUE,"F"]

Hàm IFS rất tuyệt vì bạn không cần phải lo lắng về tất cả các câu lệnh IF và dấu ngoặc đơn đó

Tôi có thể viết nhiều điều kiện trong câu lệnh if không?

Sau đây chúng ta sẽ nghiên cứu cách kiểm tra nhiều điều kiện trong một câu lệnh if. Điều này có thể được thực hiện bằng cách sử dụng 'và' hoặc 'hoặc' hoặc CẢ HAI trong một câu lệnh duy nhất . và so sánh = để điều này hoạt động bình thường, cả hai điều kiện được cung cấp phải đúng. Nếu điều kiện đầu tiên sai, trình biên dịch sẽ không kiểm tra điều kiện thứ hai.

Bạn có thể có nhiều câu lệnh if khác trong R không?

Trong R, bạn có thể sử dụng bao nhiêu câu lệnh if khác tùy thích trong chương trình của mình.

Chủ Đề