【问题标题】:subset a dataset when the variables in the dataset matches a variable list当数据集中的变量与变量列表匹配时,对数据集进行子集化
【发布时间】:2013-01-02 15:42:58
【问题描述】:

我正在处理 sas 中的一个数据问题。 我有一个数据集,包括 1000 个变量和每个变量的 1000 条记录。 我还有另一个变量列表,其中包括 100 个变量名称。 当该数据集中的变量名称与变量列表匹配时,我想对第一个数据集进行子集化。

我尝试了proc mergeproc sql,但无法解决。 谁能帮帮我?

非常感谢

【问题讨论】:

  • 如果您希望有人编写按预期工作的代码,您应该描述表的结构。示例数据将是完美的。

标签: sas subset


【解决方案1】:

SAS 使用方便命名的关键字“keep”和“drop”来保留或删除变量。如果您还没有文本格式的列表,PROC SQL 可以帮助您生成列表。

data want;
set have;
keep var1 var2 var3 var4;
run;

如果你有数据集“vnames”中的变量列表和变量“tokeep”,你可以这样做:

proc sql;
select tokeep into :keeplist separated by ' ' from vnames;
quit;

data want;
set have;
keep &keeplist.;
run;

PROC SQL 获取 'tokeep' 的内容,而不是将它们选择到表或屏幕上,而是将它们放在宏变量 'keeplist' 内的空格分隔列表中,然后将其用作'保持'声明。

【讨论】:

  • 我试过你的代码作为proc sql;从列表中选择 tokeep 到 :keeplist 中,用 ' ' 分隔;放弃;但它不起作用。我不知道为什么
  • 既然你没有解释它是如何不起作用的,我也不知道为什么:)
【解决方案2】:

Here你可以找到如何将一个数据集的所有变量名称的列表输出为另一个数据集。这将使您更容易决定您将使用哪些大数据集以及您将不使用哪些大数据集(例如,变量名称的左(或右)连接,然后查看行数至少是您使用的变量数想拥有)。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多