我遇到的问题是:
我有一个数据库,里面有一长串患者的xray和相关信息,按患者ID排序。我想要做的是找到每个患者进行第一次X射线检测的时间,我想为这些患者的每个X射线填写这个。问题是每个患者经常有多个X光片,我不知道如何将数据从另一列复制到我的timeOfFirstXray列。
例如; (抱歉我的格式很糟糕)
ptid ... dateandtimeofxray ..... dateandtimeof1stXRAY
4 ....... 21/1/2011 4:30 ............ 21/1/2011 4:30 < /强>
4 ....... 22/2/2011 5:11 ........... 21/1/2011 4:30
4 ....... 25/5/2011 5:00 ........... 21/1/2011 4:30
5 ....... 29/7/2000 3:00 ............ 29/7/2000 3:00 < /强>
5 ......... 30/7/2000 4:00 ......... 29/7/2000 3:00
5 ........ 31/7/2000 5:00 ......... 29/7/2000 3:00
5 ......... 1 / 8/2000 1:00 ........... 29/7/2000 3:00
6 ......... 1/9/2002 2:00 ........... 1/9/2002 2:00
8 ........ 3/10/2008 3:23 ......... 3/10/2008 3:23
8 ......... 4/10/2008 5:00 ......... 3/10/2008 3:23
8 ........ 5/10/2008 9:00 ......... 3/10/2008 3:23
我的伪代码是:
将计数器设为0 将日期变量初始化为第一行的日期值 foreach row, 如果反击&lt; patientID,counter ++直到与id相等,将date日期变量设置为该行中的date值,并将该值设置为timeOfFirstXray。 否则,如果counter == patientID,将日期变量中的现有值复制到此行的timeOfFirstXray中
我之前从未使用过SPSS或excel这类东西,所以基本上我正在寻找的是以上翻译过的。
谢谢你的阅读!
答案 0 :(得分:1)
这是一个SPSS选项。
`do if (missing(lag(ptid)) or ptid ne lag(ptid)). compute dateandtimeof1stxray = dateandtimeofxray. end if. leave dateandtimeof1stxray.`
这假设输入数据集中不存在dateandtimeof1stxray。
HTH, 乔恩佩克
答案 1 :(得分:0)
这是一个Excel选项。假设您的数据从第2行开始,请在C2中输入此公式并向下复制。请注意,这是一个数组公式,必须使用Ctrl-Shft-Enter输入。 (如果正确完成,你会在公式周围看到花括号。)然后只需要根据需要复制:
=MIN(IF(($A$2:$A$12=A2)*($B$2:$B$12),$B$2:$B$12))
调整范围以适合您的数据。请注意,即使它们的源数据不是按时间顺序排列,它也会获得最早的日期。
如果您对公式背后的逻辑感兴趣,请参阅我博客上的this post。
如果您只是想显示最小值,您可以通过在Excel中使用数据透视表(此处显示的Excel 2010)来完成与上述Andy W评论类似的操作。关键是“将值显示为”Min: