0

下面是一些数据:

    Test Day1 Day2 Score
    A 1 2 100
    B 1 3 62
    C 3 4 90
    D 2 4 20
    E 4 5 80

我正在尝试从列“day”和“day2”中获取值,并使用它们来选择列分数的行号。例如,对于测试 AI 想要找到 100 和 62 的总和,因为这是第一行和第二行分数的值。测试 BI 想找到 100、62 和 90 的总和。有没有人对如何去做这件事有任何想法?我希望使用类似于 Excel 中的间接函数的东西?谢谢你

4

1 回答 1

1

诀窍是将变量“Score”转换为一行。想不出一个简单的方法来避免 SAVE/GET - 改进的余地。

file handle tmp
 /name = "C:\DATA\Temp".

***.

data list free /Test (a1) Day1 (f8) Day2 (f8) Score (f8).
begin data
A 1 2 100
B 1 3 62
C 3 4 90
D 2 4 20
E 4 5 80
end data.

comp f = 1.

var wid all (12).

save out "tmp\data.sav".


***.

get "tmp\data.sav"
 /keep score.

flip.

comp f = 1.

match files
 /file "tmp\data.sav"
 /table *
 /by f
 /drop case_lbl.

comp stat = 0.
do rep var = var001 to var005
 /k = 1 to 5.
if range(k, Day1, Day2) stat = sum(stat, var).
end rep.

list Test Day1 Day2 Score stat. 

结果:

Test     Day1     Day2    Score     stat

A           1        2      100      162
B           1        3       62      252
C           3        4       90      110
D           2        4       20      172
E           4        5       80      100


Number of cases read:  5    Number of cases listed:  5
于 2012-02-07T15:53:24.020 回答