如何根据SPSS或Excel中的计数器批量复制行

时间:2012-08-11 07:45:42

标签: excel spss

我遇到的问题是:

我有一个数据库,里面有一长串患者的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这类东西,所以基本上我正在寻找的是以上翻译过的。

谢谢你的阅读!

2 个答案:

答案 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))

enter image description here

调整范围以适合您的数据。请注意,即使它们的源数据不是按时间顺序排列,它也会获得最早的日期。

如果您对公式背后的逻辑感兴趣,请参阅我博客上的this post

如果您只是想显示最小值,您可以通过在Excel中使用数据透视表(此处显示的Excel 2010)来完成与上述Andy W评论类似的操作。关键是“将值显示为”Min:

enter image description here