楼主: 番茄奏鸣曲
1476 2

proc Sql 数据筛选问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

60%

还不是VIP/贵宾

-

威望
0
论坛币
1808 个
通用积分
30.4222
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
6004 点
帖子
92
精华
0
在线时间
150 小时
注册时间
2012-2-20
最后登录
2022-4-28

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
关键词:标准差 平均值 heart
沙发
yingj7093 在职认证  发表于 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;

使用道具

藤椅
kaiwen2015 发表于 2017-3-3 12:41:45 |只看作者 |坛友微信交流群
可以先sort心率,然后在proc sql后用delete from...where obsNum le 3 and _n_ gt 倒数第三obs

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 01:23