【问题标题】:SAS, Python, Excel Create Constantly Updating FunctionSAS、Python、Excel 创建不断更新函数
【发布时间】:2015-01-12 23:57:21
【问题描述】:

我有一个非常大的数据集。我一直在 SAS 工作;但是我愿意使用 Python 和 excel(只有具有良好细节的 excel——我从来没有在这里编程过)。逐行排序(按时间)观察的每个人都有一个识别号。在某些行中,我有一个二进制观察结果,分别表示“成功”或“失败”,分别用 1 或 0 标记。我想再添加三列(在包含成功/失败的每一行上),其中包含成功的总数(累积时)和失败的总数(累积时)以及之间的比率他们俩。这个比例是微不足道的;但是,我只是不知道如何做前两个。任何帮助将不胜感激。谢谢!

作为更新:这是我的数据集的一个想法:

 ID     Success     Failure    totaSuccess    totalFailure    ratio

1234       -           -          -                -           -
1234       1           0          1                0         1/(1+0)
2345       -           -          -                -           -
2345       0           1          0                1         0/(1+0)
1234       0           1          1                1         1/(1+1)

【问题讨论】:

  • 如果您向我们提供一些示例输入和预期输出,这将非常有帮助。再加上您为实现这一目标所做的努力。
  • 您可以对变量求和以获得成功的总数,变量的计数 - 失败的成功次数。您还必须决定当失败为 0 时要做什么,因为您将除以 0。更重要的是,您需要解释表是如何更新的,以及您需要如何考虑这一点解决方案。
  • @TanveerAlam 我会提供一些代码(我通常会这样做),但我现在不知道该使用什么。
  • @Reese 我在描述中发帖
  • 什么是缺失值行?

标签: python excel csv dataset sas


【解决方案1】:
PROC SORT DATA = HAVE;
    BY ID;
RUN;

DATA WANT / VIEW = WANT;
    SET HAVE;
    BY ID;

    IF FIRST.ID THEN DO;
        TOTALSUCCES = 0;
        TOTALFAILURE = 0;
    END;

    TOTALSUCCES + SUCCESS;
    TOTALFAILURE + FAILURE;
RUN;

【讨论】:

  • 您的答案被标记为低质量,这意味着显然不是每个人都清楚您的答案为什么以及如何解决问题。也许您可以添加一些描述和 cmets 来解释这段代码的作用?
【解决方案2】:

在 SAS 中,您可以创建一个视图,以便它随着表的更新而更新。无论您使用什么解决方案,重要的是要阐明您的表格是如何更新的。

data have;
do id=1 to 10;
    numobs=ceil(rand('uniform')*5);
    do i=1 to numobs;
        value=rand('bernoulli', 0.3);
        output;
    end;
end;
drop i numobs;
run;

proc sql;
    create view want as
    select id, value, sum(value) as success, count(value)-sum(value) as failure, sum(value)/(count(value)) as ratio
    from have
    group by id;
quit;

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2021-10-19
    • 2014-05-08
    • 2023-03-25
    • 2015-05-21
    相关资源
    最近更新 更多