全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1723 2
2017-03-03
悬赏 10 个论坛币 已解决
问题:
要列出病人心率(heart rate)没有缺失以及是在 平均值+/- 2*标准差的范围外(即大于,平均值+2*标准差,小于平均值-2*标准差)那些病人的ID,同时,在计算平均值和SD的时候,要剔除心率最高的3个病人和心率最低的三个病人(也就是说,计算平均值和SD的时候,最高和最低的三个数字已经被剔除了)。用SQL来做。

我只知道怎么做前面一步,不知道怎么在计算平均值和SD前剔除最高和最低的3个心率值......

我的代码如下:
第一张图为数据步,
第二张图是我对这个问题的代码
3.JPG

1.JPG

2.JPG

请各位大神解惑,万分感谢~

最佳答案

yingj7093 查看完整内容

用sql生成一个排序,然后手动剔除前3和后3的,再计算avg和std吧。sql排序语句如下: proc sql; select distinct a.id,a.heartrate,count(a.heartrate) as rank from patients as a, patients as b where a.heartrate
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-3 11:26:53
用sql生成一个排序,然后手动剔除前3和后3的,再计算avg和std吧。sql排序语句如下:
proc sql;
select distinct a.id,a.heartrate,count(a.heartrate) as rank
from patients as a, patients as b
where a.heartrate <= b.heartrate
group by a.id
order by  a.heartrate desc;quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-3 12:41:45
可以先sort心率,然后在proc sql后用delete from...where obsNum le 3 and _n_ gt 倒数第三obs
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群