Ngôn ngữ SAS, phát triển bởi SAS Institute, là một trong những công cụ mạnh mẽ và linh hoạt nhất trong lĩnh vực phân tích dữ liệu và khoa học dữ liệu ngày nay. Với khả năng xử lý dữ liệu lớn, phức tạp và thực hiện các phân tích thống kê sâu sắc, SAS đã trở thành một tiêu chuẩn trong ngành, đặc biệt là trong các lĩnh vực yêu cầu độ chính xác và độ tin cậy cao như dược phẩm, ngân hàng, bảo hiểm và nghiên cứu thị trường. Điều này không chỉ làm nổi bật tầm quan trọng của SAS trong việc đưa ra quyết định dựa trên dữ liệu mà còn chứng tỏ nhu cầu lớn đối với các chuyên gia có kỹ năng và hiểu biết về ngôn ngữ này.
Trong bối cảnh đó, việc xử lý và sử dụng chuỗi trong SAS trở thành một kỹ năng quan trọng, bởi dữ liệu thường xuất hiện dưới dạng văn bản trong nhiều tình huống phân tích. Từ việc xử lý dữ liệu thô, lọc thông tin, đến phân tích nội dung và trích xuất dữ liệu, kỹ năng làm việc với chuỗi là không thể thiếu. Bài viết này sẽ tập trung vào việc giới thiệu và hướng dẫn cách xử lý chuỗi một cách hiệu quả trong SAS, từ các thao tác cơ bản đến các kỹ thuật nâng cao. Mục tiêu là trang bị cho bạn đọc kiến thức và kỹ năng cần thiết để sử dụng chuỗi trong các tác vụ phân tích dữ liệu, giúp họ tối ưu hóa quy trình làm việc và nâng cao chất lượng phân tích.
Chuỗi trong SAS là gì?
Trong ngôn ngữ lập trình SAS, chuỗi được hiểu là một dãy các ký tự bao gồm chữ cái, số, và các ký tự đặc biệt, được sử dụng để biểu diễn văn bản. Chuỗi có thể chứa thông tin từ đơn giản như tên và địa chỉ, đến phức tạp như đoạn văn bản hoặc mã dữ liệu. Trong SAS, chuỗi thường được lưu trữ trong các biến có kiểu dữ liệu ‘character’.
Để khai báo và gán giá trị cho biến chuỗi trong SAS, bạn sử dụng cú pháp trong một bước DATA. Biến chuỗi được khai báo bằng cách sử dụng từ khóa $ sau tên biến, chỉ ra rằng đó là một biến kiểu character. Ví dụ, name $
khai báo biến ‘name’ là một chuỗi. Gán giá trị cho biến chuỗi được thực hiện thông qua một câu lệnh gán, ví dụ name = 'John Doe';
, trong đó ‘John Doe’ là giá trị của chuỗi được gán cho biến ‘name’.
Khi làm việc với chuỗi trong SAS, có một số hạn chế và điều cần lưu ý. Đầu tiên, độ dài mặc định của một chuỗi trong SAS là 8 ký tự, nhưng bạn có thể chỉ định độ dài lớn hơn nếu cần thông qua cú pháp khai báo. Ví dụ, name $50.
khai báo biến ‘name’ với độ dài tối đa là 50 ký tự. Thứ hai, SAS không phân biệt chữ hoa và chữ thường trong chuỗi, điều này cần được lưu ý khi thực hiện so sánh chuỗi. Cuối cùng, khi thao tác với chuỗi lớn hoặc xử lý nhiều chuỗi cùng một lúc, hiệu suất có thể bị ảnh hưởng; do đó, việc tối ưu hóa mã lệnh và sử dụng các hàm xử lý chuỗi một cách thông minh là rất quan trọng để duy trì hiệu suất.
Khai báo các biến chuỗi
Dưới đây là một ví dụ cho thấy khai báo của hai biến chuỗi string 1 và string 2. Như bạn có thể thấy một dấu đô la đã được đặt ở cuối để biểu thị rằng biến có kiểu ký tự. Các số, 5 và 6 ở cuối chuỗi biểu thị độ dài của chuỗi.
Thí dụ:
data string_example; LENGTH string1 $ 6 String2 $ 5; /*String có độ lớn 6 và 5 */ String1 = 'Hello'; String2 = 'World';
Hai cột có tên biến chuỗi 1 và chuỗi 2 được tạo kiểu ký tự. Xin chào và World là các giá trị dữ liệu ở dạng chuỗi bên trong tập dữ liệu.
Xem thêm String( Chuỗi ) trong ngôn ngữ Dart
Hàm chuỗi SAS
LENGTH
Hàm LENGTH
đo lường độ dài của chuỗi, không kể các khoảng trắng thừa ở cuối chuỗi.
- Ví dụ: Để tìm độ dài của chuỗi
name
, bạn có thể sử dụng:
len = LENGTH(name);
Trong đó len
sẽ chứa độ dài của chuỗi name
.
SUBSTR
Hàm SUBSTR
cho phép trích xuất một phần của chuỗi bắt đầu từ một vị trí nhất định với một độ dài xác định.
- Ví dụ: Để trích xuất 5 ký tự đầu tiên từ chuỗi
full_name
:
first_name = SUBSTR(full_name, 1, 5);
Kết quả là biến first_name
sẽ chứa 5 ký tự đầu tiên của full_name
.
TRIM
Hàm TRIM
được sử dụng để loại bỏ các khoảng trắng không mong muốn ở cuối chuỗi.
- Ví dụ: Để loại bỏ khoảng trắng thừa ở cuối chuỗi
name
:
trimmed_name = TRIM(name);
trimmed_name
sẽ là phiên bản của name
mà không có khoảng trắng thừa ở cuối.
COMPRESS
Hàm COMPRESS
loại bỏ các ký tự không mong muốn từ chuỗi, có thể chỉ định rõ ký tự cần loại bỏ.
- Ví dụ: Để loại bỏ tất cả các khoảng trắng trong chuỗi
name
:
clean_name = COMPRESS(name, ' ');
clean_name
sẽ là phiên bản của name
mà không có bất kỳ khoảng trắng nào.
COMPBL
Hàm COMPBL
trong SAS được thiết kế để thay thế các khoảng trống liên tiếp trong chuỗi bằng một khoảng trống duy nhất, giúp chuẩn hóa dữ liệu chứa khoảng trống không đồng nhất, thường thấy trong tên và địa chỉ.
Cú pháp: COMPBL(string)
Ví dụ:
data _null_; char = "A D XYZ"; new_char = COMPBL(char); put new_char; run;
Đầu ra sẽ là A D XYZ
, với khoảng trắng giữa D
và XYZ
được thu hẹp lại.
STRIP
Hàm STRIP
loại bỏ khoảng trắng ở cả đầu và cuối chuỗi, giúp loại bỏ dấu cách không mong muốn trước và sau nội dung chính.
Cú pháp: STRIP(string)
Ví dụ:
data _null_; char = " XYZ "; stripped = STRIP(char); put stripped; run;
Đầu ra sẽ là XYZ
, với tất cả khoảng trắng ở đầu và cuối được loại bỏ.
LEFT
Hàm LEFT
căn chỉnh văn bản hoặc chuỗi về phía bên trái của biến, đồng thời loại bỏ khoảng trắng không mong muốn ở đầu chuỗi.
Cú pháp: LEFT(string)
Ví dụ:
data _null_; char = " XYZ"; left_aligned = LEFT(char); put left_aligned; run;
Đầu ra sẽ là XYZ
, với khoảng trắng ở đầu được loại bỏ.
CAT (CAT, CATS, CATT, CATX)
Các hàm CAT
nối chuỗi với nhau và có các biến thể như CATS
(loại bỏ khoảng trắng ở đầu và cuối của mỗi chuỗi trước khi nối), CATT
(loại bỏ khoảng trắng cuối của chuỗi trước khi nối), và CATX
(nối chuỗi với một dấu phân cách).
Cú pháp: CAT(string1, string2,...)
Ví dụ:
data _null_; a = "HELLO"; b = " HOW"; c = CAT(a, b); put c; run;
Đầu ra sẽ là HELLO HOW
, với a
và b
được nối với nhau.
Hàm SAS SUBSTR
Hàm SUBSTR
trích xuất một phần của chuỗi, bắt đầu từ một vị trí nhất định với một độ dài xác định.
Cú pháp: SUBSTR(string, start, length)
Ví dụ:
data _null_; string = "ABCXYZ"; sub = SUBSTR(string, 4, 2); put sub; run;
Đầu ra sẽ là XY
, với phần của chuỗi từ vị trí thứ 4 được trích xuất với độ dài 2 ký tự.
Hàm SAS LOWCASE, UPCASE, và PROPCASE
Các hàm này chuyển đổi chuỗi ký tự sang dạng viết thường (LOWCASE
), viết hoa (UPCASE
), hoặc dạng Proper Case (PROPCASE
).
Cú pháp: LOWCASE(string)
, UPCASE(string)
, PROPCASE(string)
Ví dụ:
data _null_; char = "Sas Example"; lower = LOWCASE(char); upper = UPCASE(char); proper = PROPCASE(char); put lower; put upper; put proper; run;
Đầu ra sẽ là sas example
, SAS EXAMPLE
, và Sas Example
tương ứng.
Kết hợp các hàm
Bạn có thể kết hợp các hàm trên để thực hiện các tác vụ xử lý chuỗi phức tạp. Ví dụ, để chuẩn hóa tên người dùng bằng cách loại bỏ khoảng trắng, trích xuất tên đầu tiên, và viết hoa chữ cái đầu tiên trong khi chuyển phần còn lại thành chữ thường:
clean_name = TRIM(name); /* Loại bỏ khoảng trắng thừa */ first_name = SUBSTR(clean_name, 1, FIND(clean_name, ' ') - 1); /* Trích xuất tên đầu tiên */ normalized_name = UPCASE(SUBSTR(first_name, 1, 1)) || LOWCASE(SUBSTR(first_name, 2)); /* Chuẩn hóa tên */
Ở đây, FIND
tìm vị trí của khoảng trắng đầu tiên (dấu phân cách giữa tên và họ), UPCASE
và LOWCASE
được sử dụng để chuẩn hóa tên.
Bản tóm tắt
Chúng ta đã tìm hiểu về Chuỗi SAS, khai báo Biến Chuỗi trong SAS, Hàm Chuỗi SAS, các loại Hàm Chuỗi trong Lập trình SAS cùng với cú pháp và ví dụ của chúng.
Xem thêm SAS là gì? tìm hiểu về SAS