2013-10-26 15 views
7

Tôi rất mới với SAS. Bây giờ, tôi có một bảng dữ liệu SAS như sau:Làm cách nào để đếm số quan sát trong bảng SAS?

ID  score 
------------------- 
    01   1 
    02   3 
    03   4 
    04   2 

Có cách nào để lưu các số quan sát trong bảng này chỉ sử dụng PROC Sắp xếp và DATA bước? Tôi muốn giữ giá trị trong cửa sổ nhật ký, giống như "giữ N = 4" trong tập lệnh nhật ký SAS.

Xin lỗi vì mô tả không chuyên nghiệp của tôi. Cảm ơn trước.

+0

tại sao bạn muốn giới hạn bản thân để thu thập các bước sắp xếp và dữ liệu? – mvherweg

Trả lời

2

Sử dụng nobs = trong câu lệnh đã đặt.

data _null_; 
set xyz nobs=nobs; 
put "HOLD N=" nobs ; 
stop; 
run; 
8

Là một người sử dụng SAS mới, Nobs tùy chọn có thể tất cả các bạn cần. Tuy nhiên, khi kỹ năng mã hóa của bạn tăng lên, bạn có thể thấy mình trong những tình huống không phù hợp. Tùy chọn NOBS trên câu hỏi SET có thể không hoạt động trong mọi trường hợp. Giá trị được trả về sẽ là số quan sát vật lý trong tập dữ liệu, bao gồm bất kỳ quan sát nào có thể đã bị xóa tại chỗ. Nó cũng có thể không hoạt động với các khung nhìn nhất định (đặc biệt là các khung nhìn được kết nối với các cơ sở dữ liệu bên ngoài).

Cách "an toàn nhất" để tìm số quan sát chưa được xóa trong tập dữ liệu hoặc chế độ xem là sử dụng PROC SQL và thực sự đếm chúng, đưa kết quả vào biến macro. Ví dụ: giả sử bạn có đối tượng dữ liệu có tên HAVE:

proc sql noprint; 
    select count(*) into : nobs 
    from WORK.HAVE; 
quit; 
%put 'Obs in data set:' &nobs; 

Lưu ý rằng công việc này nếu CÓ là tập dữ liệu hoặc chế độ xem.

Ngoài ra, nếu bạn phản đối chỉ là một tập hợp dữ liệu, bạn có thể sử dụng BẢNG SAS xem từ điển để trả lại NLOBS thuộc tính, trong đó có số quan sát "logic" (tức là chiếm bất kỳ hàng bị xóa):

proc sql noprint; 
    select nlobs into : nobs 
    from dictionary.tables 
    where libname='WORK' 
    and memname='HAVE'; 
quit; 
%put 'Obs in data set:' &nobs; 

Điều này chắc chắn sẽ hiệu quả hơn nếu tập dữ liệu SAS của bạn rất lớn. Tôi thường tự hỏi tại sao SAS không làm cho giá trị NLOBS này có sẵn như một tùy chọn trên câu lệnh SET, nhưng tôi chắc chắn có những lý do.

PROC SQL, lượt xem, biến macro và các quan sát đã xóa tại chỗ có thể hoàn toàn mới đối với bạn ngay bây giờ, nhưng khi bạn tiến hành học SAS, bạn nhất định bắt đầu sử dụng chúng.

-2

dữ liệu null;

đặt sashelp.vtable;

nơi libname = "WORK" và memname = "DS1";

biểu tượng cuộc gọi ("count_obs", nlobs);

chạy;

% đặt mức độ ám ảnh trong ds1 là: & count_obs;

+0

sẽ chậm nếu có nhiều bảng – xiaodai

Các vấn đề liên quan