String 使用SAS分离不同长度的字符串

String 使用SAS分离不同长度的字符串,string,sas,data-manipulation,String,Sas,Data Manipulation,假设我有如下数据: Score 6.2/30 10/30 19/30 3.4/30 我想将数据分开,这样一列将类似于6.2,另一列将类似于30 大概是 Score(1st column): 6.2 10 Out of(2nd Column): 30 当前我的数据代码如下所示: DATA grades; SET Work.grades; STRING1=grades_MMSE_Score_on_admit; TES

假设我有如下数据:

Score
6.2/30
10/30
19/30
3.4/30 
我想将数据分开,这样一列将类似于6.2,另一列将类似于30 大概是

Score(1st column):             
6.2                    
10     

Out of(2nd Column):
30
当前我的数据代码如下所示:

DATA grades;
SET Work.grades;
STRING1=grades_MMSE_Score_on_admit;
TEST3 = SUBSTR(STRING1,1,3);
RUN;

PROC PRINT DATA=grades;
VAR TEST3;
RUN;
我可以把它分开,但问题是有小数的数据点的结束位置不同。如何处理此类数据?

使用
SCAN()
函数

score=scan(grades_MMSE_Score_on_admit,1,'/');
out_of=scan(grades_MMSE_Score_on_admit,2,'/');
但你可能想把它们转换成数字

score=input(scan(grades_MMSE_Score_on_admit,1,'/'),32.);
out_of=input(scan(grades_MMSE_Score_on_admit,2,'/'),32.);
使用
SCAN()
功能

score=scan(grades_MMSE_Score_on_admit,1,'/');
out_of=scan(grades_MMSE_Score_on_admit,2,'/');
但你可能想把它们转换成数字

score=input(scan(grades_MMSE_Score_on_admit,1,'/'),32.);
out_of=input(scan(grades_MMSE_Score_on_admit,2,'/'),32.);