提问人:Eyal Marom 提问时间:11/17/2023 更新时间:11/18/2023 访问量:35
我正在尝试使用sas first.value,但得到的结果与预期不同
I am trying to use sas first.value, but get different results then expected
问:
我正在尝试运行此代码进行基本演示:
[![DATA a ;
INFILE DATALINES DSD DLM='|' ;
LENGTH Actor_Name $20 ;
INPUT Actor_Name $ Total ;
DATALINES ;
Julie Maze | 1
Julie Maze | 1
Julie Maze | 1
Marry Dryn | 1
Marry Dryn | 1
Marry Dryn | 1
;
RUN ;
PROC SORT DATA = work.a OUT = a_sorted ;
BY Actor_Name ;
RUN ;
DATA b ;
SET work.a_sorted ;
BY Actor_Name ;
IF first.Actor_Name
THEN counter = 1 ;
ELSE counter + 1 ;
RUN ;][1]][1]
我希望看到 6 条数据线,其中新的列“计数器”将为每个Actor_Name组显示 1、2、3 和 1、2、3。但我得到 1,2,3 和 1,2,1
答:
0赞
Richard
11/17/2023
#1
第 6 个排序的数据行中可能有一个控制字符,也许是一个选项卡?
运行您发布的内容会得到 1,2,3,1,2,3。您的实际数据线可能具有硬空间“A0”x。尝试在日志中查看您实际拥有的内容。PUT name $HEX40.;
评论
0赞
Eyal Marom
11/17/2023
不。无控制字符
0赞
Eyal Marom
11/18/2023
在 5ht 行中,我有空格而不是缩进。我会考虑您的评论,谢谢。
0赞
Tom
11/18/2023
什么是“空格而不是缩进”?
1赞
Tom
11/17/2023
#2
你的程序对我来说很好用。
但当然,我在显示管理器中运行了它,它会在提交代码时将制表符转换为空格。
我建议不要缩进数据行。拥有所有这些额外的空间只会让人很难看到线上的内容。它还为愚蠢的文本编辑器提供了用制表符替换空格的机会。
您也不应缩进 DATALINES 语句,以便提醒您和程序编辑器在第一列中开始键入。
在数据步骤结束后,也不需要有一个空步骤。
DATA a ;
INFILE DATALINES DSD DLM='|' ;
LENGTH Actor_Name $20 ;
INPUT Actor_Name $ Total ;
DATALINES ;
Julie Maze | 1
Julie Maze | 1
Julie Maze | 1
Marry Dryn | 1
Marry Dryn | 1
Marry Dryn | 1
;
评论