【问题标题】:how can i create loop in SAS using iterative method and print the results如何使用迭代方法在 SAS 中创建循环并打印结果
【发布时间】:2017-10-04 11:53:12
【问题描述】:

我想在 SAS 中创建一个迭代循环来计算每个 id 我的数据的平均值,如下所示:

data sample

【问题讨论】:

  • 首先sass,sas和ssas是完全不同的东西。然后,在此站点上,您应该提供示例数据、所需的输出并用代码向我们展示您已经尝试过的内容。示例数据最好以可以复制粘贴的文本形式给出,而不是图片链接。

标签: sas ssas sas-macro


【解决方案1】:

在 SAS 数据步骤中,您使用 do 循环进行迭代处理 https://blogs.sas.com/content/iml/2011/09/07/loops-in-sas.html

但是,要获得每个想法的平均值,SQL 通常要简单得多。

proc sql;
  select id, mean(value)
  from data
  group by id
  ;
quit;

【讨论】:

  • 这对您很有帮助,谢谢。但我仍在寻找做循环。
  • 你是在这种情况下“寻找循环”吗?还是一般?我认为没有理由使用 do 循环来解决您的特定问题(每个 id 的平均值)。如果您正在寻找有关循环在 SAS 中的一般工作原理的信息,请阅读我链接的文章。
  • 谢谢。在这个问题中,我提供了一个数据样本。我有数千条记录,我需要做一些操作,比如不同记录的总和和平均值。这就是我询问循环的原因。
  • 你能帮忙回答这个问题吗? stackoverflow.com/questions/46579332/…
  • 你发了吗?我看了看,但这个问题的表述很糟糕。应该(大量)编辑帖子以使其更清晰,提供示例数据,所需的输出等......
【解决方案2】:
data begin;
    input id value;
    cards;
    1 10 
    1 20 
    1 5 
    2 9
    2 6
    3 50
    3 20 
    3 44
    3 79
; run;

proc sort data=begin; by id; run; /*This is not needed in our case, but it is good practice to always sort in SAS.*/

proc means data=begin; 
    by id;  /*These are variables you count by*/
    var value; /*The value you count the mean by. You also get additional values. */
run;

您也可以将 var(mean) 替换为 mean(value)= my_mean

【讨论】:

  • 谢谢你,这是一件很酷的事情。这个过程太慢了,因为我有数千条记录。
  • @user2975180 您可以使用 data=begin noprint;output out = mean_sas_data 命令。这对于对于 proc sql 来说太大的数据集很有用。
猜你喜欢
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 2020-04-26
  • 2015-11-28
  • 1970-01-01
相关资源
最近更新 更多