由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - SAS 求助
相关主题
question about longitudinal data问一个简单的SAS问题,多谢
请教一sas codemysql 问题
请问 Proc Anova 里的 scheffe options 怎么解释请教如何用SAS处理这个RANDOM SAMPLING的问题
SAS ADV passed!!![合集] SAS的问题
请教SAS 问题求教 SAS数据转化
data reading question in SASSAS中如何只保留变量名中含有reading的变量啊
求助:SAS使用问题(读数据)How to sort the columns in SAS?
SAS 高手帮忙看看这个数据能用lifetest吗?如何将SAS DATA中的变量名改名(不知道原变量名的前提下)
相关话题的讨论汇总
话题: group话题: tester话题: 完成话题: 测试话题: g2
进入Statistics版参与讨论
1 (共1页)
o********s
发帖数: 853
1
背景是要检查测试人员是否完成了规定的一组测试。
标准的测试是有3组,每一组内有不同数量和内容的测试,测试人员只须选取其中的一
组或几组并完成该组内的所有测试,如果完成了组内的所有测试,该组就可标记为"完
成",否则,要记为"未完成"。
假如标准测试分组内容为
data std;
input grp_st $ msr_st $;
cards;
g1 g1m1
g1 g1m2
g2 g2m1
g2 g2m2
g2 g2m3
g3 g3m1
g3 g3m2
;
测试GROUP1有2个测试,GROUP2有3个,GROUP3有2个。
实际测试人员完成的情况为
data have;
input tester $ grp $ msr $;
cards;
t1 g1 g1m1
t1 g1 g1m2
t1 g2 g2m1
t2 g1 g1m1
t3 g2 g2m1
t3 g2 g2m2
t4 g3 g3m1
t4 g3 g3m2
;
实际操作中,TESTER1完成了GROUP1中的2个,但没有完成GROUP2中3个,所以对于
TESTER1,GROUP1应标记为"完成",GROUP2为"未完成"。类似的,TESTER2,
GROUP1"未完成"。TESTER3,GROUP2"未完成"。TESTER4,GROUP3"完成"。
该如何用SAS实现?多谢。
P****D
发帖数: 11146
2
如果这是实际情况的话,把数据transpose成每个组的每个测试都是一个独立variable
、每个observation是一个人的样子,好比这样:
tester g1m1 g1m2 g2m1
1 Y N Y
然后就很简单了。
如果实际上测试非常多,就不要transpose了,保持数据是long,把测试单列成一个
variable,然后用proc sql的sum。

【在 o********s 的大作中提到】
: 背景是要检查测试人员是否完成了规定的一组测试。
: 标准的测试是有3组,每一组内有不同数量和内容的测试,测试人员只须选取其中的一
: 组或几组并完成该组内的所有测试,如果完成了组内的所有测试,该组就可标记为"完
: 成",否则,要记为"未完成"。
: 假如标准测试分组内容为
: data std;
: input grp_st $ msr_st $;
: cards;
: g1 g1m1
: g1 g1m2

o********s
发帖数: 853
3
thanks, the tests are not too many, less than 7 in each group.
Can you explain more about the "long" method, it seems like a universal way,
and better.
Thanks agin.

variable

【在 P****D 的大作中提到】
: 如果这是实际情况的话,把数据transpose成每个组的每个测试都是一个独立variable
: 、每个observation是一个人的样子,好比这样:
: tester g1m1 g1m2 g2m1
: 1 Y N Y
: 然后就很简单了。
: 如果实际上测试非常多,就不要transpose了,保持数据是long,把测试单列成一个
: variable,然后用proc sql的sum。

P****D
发帖数: 11146
4
proc sql;
create table count
/* count the number of tests completed by each tester in each group */
as
select have.tester, sum((have.grp="g1")) as compg1 label="# of tests
completed in Group 1", sum((have.grp="g2")) as compg2 label="# of tests
completed in Group 2", sum((have.grp="g3")) as compg3 label="# of tests
completed in Group 3"
from have
group by tester
;
quit;
data detercomp;
set count;
if compg1<2 then CompleteG1=1; else CompleteG1=0;
label CompleteG1="Tester complete Group 1 (yes/no)";
run;

way,

【在 o********s 的大作中提到】
: thanks, the tests are not too many, less than 7 in each group.
: Can you explain more about the "long" method, it seems like a universal way,
: and better.
: Thanks agin.
:
: variable

o********s
发帖数: 853
5
thanks, but maybe I didn't express myself clearly enough. I can't just check
the number of measures, I have to make sure the measures that a tester did
for a group is the correct measures in that particular group (i.e. the name
of the measures have to match with standard).

tests

【在 P****D 的大作中提到】
: proc sql;
: create table count
: /* count the number of tests completed by each tester in each group */
: as
: select have.tester, sum((have.grp="g1")) as compg1 label="# of tests
: completed in Group 1", sum((have.grp="g2")) as compg2 label="# of tests
: completed in Group 2", sum((have.grp="g3")) as compg3 label="# of tests
: completed in Group 3"
: from have
: group by tester

P****D
发帖数: 11146
6
You didn't mention anything like "meeting standards"... I am not sure I
follow you. All I know is that my code achieves this goal of yours: 所以对于
TESTER1,GROUP1应标记为"完成",GROUP2为"未完成"。类似的,TESTER2,
GROUP1"未完成"。TESTER3,GROUP2"未完成"。TESTER4,GROUP3"完成"。
Please provide more clarification.

check
did
name

【在 o********s 的大作中提到】
: thanks, but maybe I didn't express myself clearly enough. I can't just check
: the number of measures, I have to make sure the measures that a tester did
: for a group is the correct measures in that particular group (i.e. the name
: of the measures have to match with standard).
:
: tests

r***9
发帖数: 140
7
你楼上的解释的很清楚了,应该每组完成数,再加上你楼上的得出实际完成数,你用条
件语句判断一下就得出你想要的。

check
did
name

【在 o********s 的大作中提到】
: thanks, but maybe I didn't express myself clearly enough. I can't just check
: the number of measures, I have to make sure the measures that a tester did
: for a group is the correct measures in that particular group (i.e. the name
: of the measures have to match with standard).
:
: tests

l****u
发帖数: 529
8
proc sql;
create table new as
select distinct tester, msr, grp ,max(case when index=0 then 'Not Done'
else '' end) as status
from( select s.*, h.*,sum(case when msr_st=msr then 1 else 0 end )as
index
from have h, std s
where h.grp=s.grp_st
group by tester,grp_st, msr_st)
group by tester,grp_st;
quit;
o********s
发帖数: 853
9
不只是完成数,还要比较完成的测试是不是该组的测试。比如说,组1的测试是1和2,
但如果他完成了2和3,虽说是两个测试,但所作的测试不对,也不能说“完成”了。所
以,只检查测试的个数是不行的。

【在 r***9 的大作中提到】
: 你楼上的解释的很清楚了,应该每组完成数,再加上你楼上的得出实际完成数,你用条
: 件语句判断一下就得出你想要的。
:
: check
: did
: name

P****D
发帖数: 11146
10
组1里根本没有3啊,他怎么完成3?
要是你的数据很脏,那你自己清理。清理之后能像你的have一样就可以用我的code。

【在 o********s 的大作中提到】
: 不只是完成数,还要比较完成的测试是不是该组的测试。比如说,组1的测试是1和2,
: 但如果他完成了2和3,虽说是两个测试,但所作的测试不对,也不能说“完成”了。所
: 以,只检查测试的个数是不行的。

o********s
发帖数: 853
11
组1里没有3,但如果他做了3并作为组1里的测试提交了,虽说他组1提交了2个测试,符
合组1测试个数的要求,但组1应该做测试1和2,他却提交了测试2和3,就说明他做错了
,也就“未完成”。所以光比较个数不行。

【在 P****D 的大作中提到】
: 组1里根本没有3啊,他怎么完成3?
: 要是你的数据很脏,那你自己清理。清理之后能像你的have一样就可以用我的code。

1 (共1页)
进入Statistics版参与讨论
相关主题
如何将SAS DATA中的变量名改名(不知道原变量名的前提下)请教SAS 问题
SAS -proc transpose 急问!data reading question in SAS
如何用SAS Macro来计算这个公式?求助:SAS使用问题(读数据)
问个SAS数据处理的问题SAS 高手帮忙看看这个数据能用lifetest吗?
question about longitudinal data问一个简单的SAS问题,多谢
请教一sas codemysql 问题
请问 Proc Anova 里的 scheffe options 怎么解释请教如何用SAS处理这个RANDOM SAMPLING的问题
SAS ADV passed!!![合集] SAS的问题
相关话题的讨论汇总
话题: group话题: tester话题: 完成话题: 测试话题: g2