楼主: ethantung
1827 4

[问答] 如何在SPSS中用语句实现任意两行数据相减并求绝对值 [推广有奖]

  • 1关注
  • 1粉丝

已卖:1616份资源

硕士生

15%

还不是VIP/贵宾

-

威望
0
论坛币
2450 个
通用积分
93.4519
学术水平
4 点
热心指数
10 点
信用等级
-1 点
经验
4186 点
帖子
81
精华
0
在线时间
125 小时
注册时间
2008-12-17
最后登录
2025-2-6

楼主
ethantung 发表于 2023-5-31 14:41:32 |AI写论文
10论坛币
假设有列变量,名为DATA

我想实现 任意两行数据相减之后求绝对值而后再相加

类似于
图片1.png
COMPUTE   GINI_DATA=0.
COMPUTE   N=1173.
Loop  nI=1 to N.
    Loop  nJ=1 to N.
        COMPUTE GINI_DATA=ABS(DATA[nI]-DATA[nJ])+GINI_DATA.
    End loop.
End loop.
EXECUTE.


但是无法执行, 不知道哪里错了,希望大家帮忙看看。

最佳答案

邱宗满 查看完整内容

按照公式,最终只能求出一个数字,而不是一个变量。如果确定这是你需要的,SPSS的普通语法应该是无法实现你需要的功能。 在确保不存在缺失数据的情况下,可以使用以下矩阵语法进行计算,SPSS会输出计算数值。 其中,Var1 是用于计算的目标变量,替换为你的变量名即可。 /****************** SPSS语法 ******************. set mxloop=1000000. matrix. get raw/file=*/vars= Var1 /missing=omit. compute ncase ...
关键词:SPSS 绝对值 PSS compute EXECUTE

沙发
邱宗满 学生认证  发表于 2023-5-31 14:41:33
按照公式,最终只能求出一个数字,而不是一个变量。如果确定这是你需要的,SPSS的普通语法应该是无法实现你需要的功能。
在确保不存在缺失数据的情况下,可以使用以下矩阵语法进行计算,SPSS会输出计算数值。
其中,Var1 是用于计算的目标变量,替换为你的变量名即可

/******************    SPSS语法   ******************.
set mxloop=1000000.
matrix.
get raw/file=*/vars=    Var1   /missing=omit.
compute ncase=nrow(raw).
compute sumofall=0.
loop #q=1 to ncase.
    compute a1=make(ncase,1,raw(#q,1)).
    compute sumofall=sumofall+csum(abs(a1-raw(:,1))).
end loop.
print sumofall/title='Sum of all'/format=f20.16.
end matrix.
https://space.bilibili.com/423767625

藤椅
快快乐乐hhh 发表于 2023-6-1 15:22:31
可以直接使用函数abs(a-b)呀,SPSS和SPSSAU求差值绝对值操作如图

Snipaste_2023-06-01_15-00-40.png (29.06 KB)

Snipaste_2023-06-01_15-00-40.png

Snipaste_2023-06-01_15-20-51.png (91.97 KB)

Snipaste_2023-06-01_15-20-51.png

板凳
ethantung 发表于 2023-6-1 21:08:34
邱宗满 发表于 2023-6-1 15:52
按照公式,最终只能求出一个数字,而不是一个变量。如果确定这是你需要的,SPSS的普通语法应该是无法实现你 ...
也就是说,SPSS无法对一列变量中的单个数据直接引用 ,除非通过矩阵运算,对吧?

报纸
邱宗满 学生认证  发表于 2023-6-2 11:13:13
ethantung 发表于 2023-6-1 21:08
也就是说,SPSS无法对一列变量中的单个数据直接引用 ,除非通过矩阵运算,对吧?
SPSS普通的语法可以计算出某个特定位置的数值,但没法进行两两的遍历计算。

一个思路是,使用汇总方法,先计算出特定个案数值,然后使用汇总功能将所有个案都变成该数值。但是我试了一下,在SPSS的普通循环语法里并不支持汇总功能。

其他软件有的可以使用简单语法进行你想要的功能,是因为其它软件包本身的基础语法就融合了矩阵运算,是面向编程和高级统计工作者的。SPSS里面做了一个区分,统计工作者可以使用矩阵语言,普通用户一般用简单的语法就能解决大部分问题。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 07:34