gpt4 book ai didi

database - SAS检测并纠正数据库中的错字错误

转载 作者:行者123 更新时间:2023-12-03 08:54:38 24 4
gpt4 key购买 nike

我有一个包含50个obs(员工)和多个var的数据库:
问题q1,q2 ....,q10 => q1-q10,满意度为1-5
性别分别为1和0
等级为1 =已婚0 =单例
收入
重量
教育年限
等等..

已知数据存在拼写错误。我需要在数据库上运行并检测:
哪些var存在拼写错误
哪些(肥胖)员工有错误

如何定义条件?
例如:错误可能是两位数(性别= 00而不是0),或者值超过了小数位数(q2 = 8)。
我应该分别为每个变量定义错误吗?
对于显而易见的问题,很容易但通常要在var =教育年内检测出错误,因为这只是常识,我是否要执行“where weight = <0”?

proc print data=comb;
where inc<0;
where gender ne 0&1;
where married ne 0&1;
where q1-q10 ne 1-5;
where w=<0;
where h=<0;
where edc<0;

检测到错误后,我需要纠正它们:
如果两个数字相似(例如,gender = 00)。我应该只介绍其中一个=>(gender = 0)。
我怎样才能只打印第一位数字(用于此特定更正?)
如果值超过比例,则丢失。
再说一次,我是否要分别为每个var执行此操作?
data comb;
if gender ne 0 & 1 then gender=
else if married ne 0&1 then married=
else if q1-q10 ne 5-10 then q1-q10='';
else if
run;

无论哪种方式,我都不确定如何正确建立这些条件。

最佳答案

除了像定义操作一样定义标准之外,没有其他方法可以快速识别/纠正错误。但是,您似乎知道您需要纠正什么以及如何纠正它的标准。 SAS需要通过的次数越少越好,在这种情况下这是件好事,因为您可以在同一次通过数据中识别并纠正它们。

我不确定是否需要确定哪些记录已纠正错误,但是我在下面包括了do循环以额外设置cleanflg=1-或者,您也可以将其替换为将消息放入日志文件(例如putlog "NO" "TE: Variable Gender has been corrected from the original value of " gender= ;(例如):

data clean ;
set dirty ;
array Q[10] q1-q10 .;

if inc<0 then cleanflg=1 ; *Although assume it may be better to delete;

if gender not in('0','1','00') the do ;
cleanflg=1 ;
gender=.;
end ;

if married not in(0,1) then do ;
cleanflg=1 ;
married=.;
end ;

*Loop through Question array to set to missing if outside required range ;
do i=1 to 10 ;
if Q[i] > 5 or Q[i]<1 then do ;
cleanflg=1 ;
Q[i]=. ;
end ;
end ;
run ;

关于database - SAS检测并纠正数据库中的错字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com