用SAS分隔不同长度的字符串
Separating Strings with different lengths with SAS
假设我有数据如:
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.);
假设我有数据如:
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.);