总而言之,我正在将文档句子解析为单个句子。我需要更大的理由。

我所拥有的是“位置”表,该表为我提供了文档ID(ID)和该文档中一个句子的句子编号(NUM)。我也有一列显示已分析的句子(SENTENCE)。

因此,示例表为:

ID NUM SENTENCE
1   3    Hello
1   2    How are you
1   1    Fine
2   2    Thank you
2   1    You're Welcome
3   1    Nice Weather


这意味着在文档1中标识了三个句子,在文档2中标识了两个句子,依此类推。

问题是(ID,NUM)=(1,3)或“ Hello”,是指文档1中的第三句,而(ID,NUM)=(1,1)或“ Fine”,是指第一句文档1中的句子,这也是所有其他文档也要遵循的模式。

我想颠倒每个ID的NUM顺序,以使句子顺序更清晰。将其输入到程序的其他部分也需要这样做。

本质上,我希望输出表如下所示:

ID NUM SENTENCE
1   1    Hello
1   2    How are you
1   3    Fine
2   1    Thank you
2   2    You're Welcome
3   1    Nice Weather


我将非常感谢您对如何执行此操作提供任何帮助。

编辑:

我想更改输出以反映输出表中句子编号的互换。句子的顺序将保持不变。因此,“ Hello”将被表示为句子1,而不是3。

因此,我只希望输出表中每个“ ID”变量值内的“ NUM”变量互换。

最佳答案

proc sort data=position;
  by ID NUM;
run;


编辑:我想我误解了这个问题。您真正想要的是:

proc sort data=position;
  by ID descending NUM;
run;

data want (rename=(new_NUM=NUM));
  set position (drop=NUM);
  by ID;
  if first.ID then new_NUM = 1;
  output;
  new_NUM + 1;
run;

关于string - SAS-基于表中另一个变量值的变量值的倒序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52748924/

10-09 08:47
查看更多