【发布时间】:2017-03-20 18:37:21
【问题描述】:
我们正在分析一组具有大约 26,000 个贝壳测量值(元素读数)的地质数据。进行了相同的第二次测量(同位素读数),它只有 100 个数据点(因为机器就是这样工作的)。
现在我们正在尝试(交叉)标记每 262 个元素读数 (1) 到同位素读数 (2) 的第一个数据点。因此案例 1-262 = 1、263 - 525 = 2 等等。
DO IF(MISSING(interval_element)).
COMPUTE id_element=$SYSMIS.
ELSE IF (interval_element >= 1 AND interval_element < 262).
COMPUTE id_element = 1.
ELSE IF (interval_element >= 263 AND interval_element < 526).
COMPUTE id_element = 2.
*etc. to a 100.*
END IF.
EXECUTE.'
手动执行是一种选择(见上文),但我们有 100 个数据点,因此使用循环/重复命令执行此操作引起了我们的兴趣,原因很明显。
我们查看了http://www.spss-tutorials.com/spss-loop-command/,但没有设法从那里找到解决方案。在这个网站上发现的大多数帖子都是关于不同变量或变量之间的,而我们想要一个新变量来识别每个级别 262 个案例(最多 100 个)。
我们很好奇如何在 SPSS 语法中做到这一点,也很好奇如何在 R 中做到这一点。我们不是很有经验,但我们知道这是一个简单的问题,我们可能忽略了一些小问题。
感谢阅读!
编辑
我想我弄清楚了问题所在。问题是我们想要前 260 个案例,而不使用这些值。我选择 interval_element 的原因是因为我们想要分割距离。
但是现在看,如果我们不使用它的值也没关系。使用 interval_element,我们有 26k 个数字,范围为 [ .019926, 26.67770 ])。这就解释了为什么我们全都是,我们从不超过数据集中 262 的值。
也许我必须更清楚一点,以为我是在说案例而不是价值观,我的错。
解决方案
使用id_element=1 + trunc(($CASENUM-0.1)/262) 得到 NA,在删除 -0.1 后效果很好!
变量 interval_element 是以毫米为单位测量的距离,订购它不是问题。
@eli-k 谢谢 :)
【问题讨论】: