我们正在分析一组具有约26k贝壳测量值(元素读数)的地质数据。进行了相同的第二次测量(同位素读数),它只有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中做到这一点。我们不是那么经验但我们知道这是一个简单的问题,我们可能忽略了一些小事。 / p>
感谢阅读!
修改
我想我弄清楚问题是什么。问题是我们想要前260个案例,而不使用这些值。我选择interval_element的原因是因为我们想要分割距离。
但现在看一下,如果我们不使用它的价值,那就无所谓了。使用interval_element,我们有26k的数字,范围从[.019926,26.67770])。这就解释了为什么我们拥有所有的,我们永远不会超过数据集中262的值。
也许我必须更清楚一点,以为我是通过说案例而不是价值观,我的坏。
解
使用id_element=1 + trunc(($CASENUM-0.1)/262)
给了NA,删除 -0.1 之后就运行得很好了!
变量interval_element是以mm为单位测量的距离,排序不是问题。
@ eli-k谢谢:)
答案 0 :(得分:2)
首先,一种更有效的方式来做你正在做的事情: *创建索引变量。 按interval_element排序案例。 计算IEindex = $ casenum。
docker-compose
你仍然需要添加这样的100行,在变量id_element中创建100个级别,因此需要更复杂的方法。
现在recode IEindex
(1 thru 262=1)
(263 thru 524=2)
(525 thru 786=3)
.......
into id_element.
和loop
通常用于循环变量集。因为你这里只有一个变量,这不是一个经典的循环问题。因此,我建议使用直接确定do repeat
的简单计算而不是循环:
id_element
HTH。