【问题标题】:Is it possible to stack datasets with different variables in SAS?是否可以在 SAS 中堆叠具有不同变量的数据集?
【发布时间】:2015-03-10 03:46:16
【问题描述】:

假设我有 2 个数据集

dataset1 = 
          123456789
          222222222
          444444444

dataset2 = 
          123456  8888   account1_description
          456789  7777   account2_description

我正在尝试获得与以下示例类似的输出
堆叠 2 个数据集并在它们之间有一个字符串作为指标

[HEADER_2015-01-01]          <----inserted as a line of characters (string)
[ID]                         <----inserted as a line of characters (string)
123456789
222222222
444444444
[ACCOUNT]                    <----inserted as a line of characters (string)
123456     8888   account1_description
456789     7777   account2_description
[DETAIL]                     <----inserted as a line of characters (string)

我最初的想法是通过创建不同的数据集,然后将它们附加/堆叠在一起。
例如:
dataset1(char) = [HEADER_2015-01-01]
dataset2(char) = [ID]
dataset3(数字) =
123456789
222222222
444444444
dataset4(char) = [帐户]
数据集5 = ...
等等

但显然这是错误的,因为第一列(变量)具有不同的数据格式。有人可以提出一种实现这种输出的方法吗?提前致谢。

【问题讨论】:

  • 鉴于上述数据的格式,很难看出您想要得到什么。您能否重新格式化数据以使其更清晰?
  • 嗨 Reeza,我想要得到的非常简单,只需将多个数据集堆叠在一起而不改变它们的格式,并在它们之间插入一个 char 标题。

标签: sas


【解决方案1】:

SAS 数据集大致类似于 SQL 表。它们不是excel文件。因此,不可能完全按照您的要求进行(在不同的行上有不同的变量)。

您可以让每一行只是一个文本字符串,在这种情况下,它可以具有您想要的任何值。或者你可以有不同的变量,将它们堆叠起来,并且不同的列没有对齐就可以了;它会很好地堆叠,只是不会对齐未对齐的列。

您可以使用 SQL 对它们进行 UNION 并强制列堆叠,但它们必须是相同的数据类型。

无论如何,这不是您在 SAS 中应该做的事情,无论如何。正确的方法是将您的标题转换为对于应该在该标题下的每一行具有相同值的变量,然后您可以 proc report 以类似的结构将其退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多