【问题标题】:SPSS, syntax: How to categorize each 260 cases as a separate level in a single variableSPSS,语法:如何将每个 260 个案例分类为单个变量中的单独级别
【发布时间】: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 谢谢 :)

【问题讨论】:

    标签: r syntax spss


    【解决方案1】:

    首先,一种更有效的方式来做你正在做的事情: *创建一个索引变量。 按间隔元素对案例进行排序。 计算 IEindex=$casenum。

    recode IEindex
    (1 thru 262=1)
    (263 thru 524=2)
    (525 thru 786=3)
    .......
    into id_element.
    

    您仍然需要像这样添加 100 行,才能在变量 id_element 中创建 100 个级别,因此需要一种更复杂的方法。 现在loopdo repeat 通常用于循环访问变量集。因为这里只有一个变量,所以这不是经典的循环问题。因此,我建议不要循环,而是直接确定id_element 的简单计算:

    compute id_element=1 + trunc((IEindex-0.1)/262).
    exe.
    

    HTH。

    【讨论】:

    • 感谢您的回复,不幸的是我得到了新变量中的所有内容。不知道为什么我们要使用 trunc(),我们要拆分,而不是据我所知将它们四舍五入,对吧?一个快速的谷歌搜索给我留下了这个网站:spsstools.net/de/learning-syntax。但是他们不会循环/重复需要重新定义的案例数量。他们也手动标记它们
    • 你有 R 例子吗?
    • 这应该可以 - 尝试用一个简单的计算器计算一些值(如 262、263、500、1000) - 对于 1 到 262 的值,你应该只得到 1... 在任何情况下,请参阅我对一些额外背景的编辑。
    • 我在您的帖子中添加了一个 R 标签,这也应该有助于获得一些 R 响应。
    • 感谢您的回复,我想我找到了问题所在。问题是我们想要前 260 个 cases,而不使用这些值。我选择 interval_element 的原因是因为我们想要分割距离。但是现在看,如果我们不使用它的值也没关系。使用 interval_element,我们有 26k 个数字,范围为 [ .019926, 26.67770 ])。这就解释了为什么我们全都是,我们从不超过数据集中 262 的值。也许我必须更清楚一点,以为我是在说 cases 而不是 values,我的错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2020-07-01
    • 2023-03-06
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多