SAS:跨多个列比较 ID 对

标签 sas comparison multiple-columns

我正在处理源自“指示所有适用的”问题的数据。两名评分者被要求完成一个独特主题列表的问题。数据看起来像这样。

ID| Rater|Q1A|Q1B|Q1C|Q1D
------------------------
1 | 1    | A | F | E | B
1 | 2    | E | G | 
2 | 1    | D | C | A
2 | 2    | C | D | A

我想比较两个评估者对每个 ID 的答案,并确定 Q1A-Q1D 的答案是否相同。我对 Q1A、Q1B 等的每个评估者之间通过 ID 进行的直接比较不感兴趣。我想知道 Q1A-Q1D 中的所有值作为一组是否都相同。 (例如,在上面的示例数据中,ID 2 的评估者将是相同的)。我假设我会用数组来做到这一点。谢谢。

最佳答案

这里是一个类似的解决方案,也使用调用 sortc,但使用向量和保留变量。

创建示例数据集

data ratings;
  infile datalines truncover;
  input ID Rater (Q1A Q1B Q1C Q1D) ($);
  datalines;
1 1 A F E B
1 2 E G
2 1 D C A
2 2 C D A
3 1 A B C
3 2 A B D
;

进行比较

data compare(keep=ID EQUAL);
  set ratings;
  by ID;
  format PREV_1A PREV_Q1B PREV_Q1C PREV_Q1D $1.
         EQUAL 1.;
  retain PREV_:;
  call sortc(of Q1:);
  array Q(4) Q1:;
  array PREV(4) PREV_:;
  if first.ID then do;
    do _i = 1 to 4;
      PREV(_i) = Q(_i);
    end;
  end;
  else do;
    EQUAL = 1;
    do _i = 1 to 4;
      if Q(_i) NE PREV(_i) then EQUAL = 0;
    end;
    output;
  end;
run;

结果

ID EQUAL 
1  0 
2  1 
3  0 

关于SAS:跨多个列比较 ID 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37320274/

相关文章:

sql - 使用 proc 转置计算观察次数

db2 - 两个值相减时 SAS 得到错误结果

python - Dicts 比较列表以在列表之间进行匹配并检测 Python 中的值变化

php - 为什么 PHP 在[宽松地]比较两个数字字符串之前将它们转换为数字?

html - 一列中的 div 对齐,但立即将另一列向下移动

python - 如何删除 pandas 数据框中重复的行?

SQL In 子句多列

linux - 在 Unix 中启动和停止 SAS Server 9.2

Python 不会接受两个相同的字符串