2013-10-04 12 views
6

Tôi đang đọc một khoảng thời gian '.' dưới dạng giá trị của biến ký tự nhưng nó được đọc dưới dạng giá trị trống.Đọc một khoảng thời gian dưới dạng giá trị ký tự trong SAS

data output1; 
input @1 a $1. @2 b $1. @3 c $1.; 
datalines; 
!.. 
1.3 
; 
run; 

Output  Required 
------  -------- 
A B C  A B C 
!   ! . . 
1  3  1 . 3 

Hãy giúp tôi đọc một khoảng thời gian như vậy.

Trả lời

11

Sản lượng được xác định bởi informat sử dụng ($ informat trong trường hợp của bạn w., Theo yêu cầu của $1. trong mã của bạn, vì vậy $1. là lần đầu tiên của tất cả các định nghĩa informat, định nghĩa chiều dài của biến là một sản phẩm phụ của điều này).

Sử dụng $ char. informat cho kết quả mong muốn.

data output1; 
input @1 a $char1. @2 b $char1. @3 c $char1.; 
datalines; 
!.. 
1.3 
; 
run; 

Từ tài liệu:

$ w Informat Các $ w. informat trims hàng đầu khoảng trống và trái căn chỉnh các giá trị trước khi lưu trữ văn bản. Ngoài ra, nếu một trường chỉ chứa khoảng trống và một khoảng thời gian, $ w. chuyển đổi dấu chấm thành dấu trống vì nó diễn giải khoảng thời gian dưới dạng giá trị bị thiếu. $ W. informat xử lý hai hoặc nhiều khoảng thời gian trong một trường dưới dạng dữ liệu ký tự.

$ CHARw. informat $ CHARw. informat không cắt các khoảng trắng đầu và cuối hoặc chuyển đổi một khoảng thời gian duy nhất trong trường dữ liệu đầu vào thành một khoảng trống trước khi lưu trữ các giá trị.

+1

điều này thật đáng kinh ngạc !!! cảm ơn nhiều – athresh

0

Tôi không thấy ngay lý do tại sao nó không hoạt động. Nhưng nếu bạn không quan tâm đến việc tìm ra lý do tại sao nó không hoạt động, nhưng chỉ muốn một cái gì đó làm: đọc nó trong như 1 biến chiều dài $ 3. Sau đó, trong một bước tiếp theo; chia nó bằng chất nền.

Ví dụ,

data output1; 
    length tmp $3; 
    input tmp; 
    datalines; 
     !.. 
     1.3 
    ; 
run; 
data output2 (drop=tmp); 
    length a $1; 
    length b $1; 
    length c $1; 

    set output1; 

    a=substr(tmp,1,1); 
    b=substr(tmp,2,1); 
    c=substr(tmp,3,1); 
run; 
+0

Cảm ơn bạn đã nhập. Nhưng tôi cần đọc nó như một nhân vật duy nhất không thể làm được. – athresh

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