作者yonny (悠逆)
看板Statistics
标题[程式] SAS选择最近的值後转置
时间Tue Mar 22 22:57:42 2016
[软体程式类别]: SAS (R也可以 但是我跟R比较不熟)
[程式问题]: 资料处理
[软体熟悉度]:熟悉
[问题叙述]:
我的资料大概长像这样
No是每次检验的流水号 ID相同是同一个人
GOT和GPT是在不同时间点做的检验数值
但不是每个时间点 都有两个检查都做
而且不同人做检查的时间点也都不相同
No ID Month GOT GPT
1 1 0.2 41 34
2 1 2.8 42 .
3 1 3.5 43 36
4 1 3.7 44 37
5 1 4.9 45 38
6 1 5.5 51 39
7 1 5.7 52 40
8 1 6.0 53 .
9 1 6.2 54 .
10 2 0.9 20 21
11 2 4.0 22 .
12 2 4.1 24 25
13 2 5.7 . 36
14 2 6.0 30 .
以下是我期望的资料型态
ID GOT_0M GOT_3M GOT_6M GPT_0M GPT_3M GPT_6M
1 41(0.2) 42(2.8) 53(6.0) 34(0.2) 36(3.5) 40(5.7)
2 20(0.9) 22(4.0) 30(6.0) 21(0.9) . 36(5.7)
我想要把资料转置成横的,以GOT为例,
我要创造三个变项 GOT_0M GOT_3M GOT_6M (分别为0,3,6个月的GOT)
这三个时间点若无完全符合的值, 则抓正负一个月内的值来代替
若正负一个月内都无值, 则missing
值後面括号(是用哪个时间点的值)
---
以上大概是我的资料型态
实际的资料 有好几百人的资料
每个人大概都有30~100个检验的时间点
检验数值(如GOT,GPT之类的) 大概有10几个
而我们要取的时间点实际上也不只有三个(0,3,6,12,18,24,36,48M)
感觉有点复杂(囧)
我目前大概查一下 可能用PROC SQL先写出来
再看改成MACRO
(我今天挣扎了一下午 只写了一点点简单的 完全离目标很远XD)
想请问看板上的高手有无建议要用什麽statement写比较适合?
我再研究一下
或是若有高手可以帮忙写出来
小小3000P表达感谢!
非常谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.223.253.102
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1458658664.A.A7D.html
1F:推 west1996: 正负一个月如果有多个值是挑最接近的那个时间点吗?如果 03/23 01:15
2F:→ west1996: 两个时间点距离一样要怎麽选?好比2.7跟3.3但没有3.0这 03/23 01:15
3F:→ west1996: 样选哪一个点? 03/23 01:16
4F:→ yonny: 对耶!没想到这个问题! 选之前的时间点!! 03/23 09:31
5F:推 west1996: 先挑最近的,平手的话选之前的?还是无论如何都只选之前 03/23 22:37
6F:→ west1996: 的? 03/23 22:37
7F:→ yonny: 对 先挑最近的! 平手再挑之前的~ 03/25 00:27
8F:→ yonny: 或是先挑最近的~平手的话求平均 不知是否会很麻烦?谢谢~ 03/25 00:28