- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些数据,它本质上是很多列信息/数据和日期,然后是两列数字和一列是标志(即它是 1 或 0)。每行是特定月份的个人信息。
对于两列数字,我想创建两个新列,它们是每个人随时间推移的累积数字。对于标志,我希望它在该个人的所有 future 日期中都为 1,一旦该标志首次成为该个人的 1。
我正在努力表达这个(所以也谷歌我想做什么!)所以我把我拥有的和我想要的放在下面。在此示例中:A1、B1、C1 将是一个个体,而 A1、B2、C3 将是另一个个体。
我有这个:
第 1 列
Col2
第 3 列
日期
值_1
值_2
旗帜
A1
B1
C1
2021 年 1 月 1 日
0
100
0
A1
B1
C1
2021 年 2 月 1 日
0
0
0
A1
B1
C1
2021 年 3 月 1 日
10
100
0
A1
B1
C1
2021 年 4 月 1 日
50
0
0
A1
B1
C1
2021 年 5 月 1 日
0
10
1
A1
B1
C1
01Jun2021
10
0
0
A1
B1
C1
2021 年 7 月 1 日
0
0
0
A1
B2
C3
2021 年 1 月 1 日
0
0
0
A1
B2
C3
2021 年 2 月 1 日
0
20
1
A1
B2
C3
2021 年 3 月 1 日
10
20
0
A1
B2
C3
2021 年 4 月 1 日
40
20
0
A1
B2
C3
2021 年 5 月 1 日
0
0
0
A1
B2
C3
01Jun2021
30
0
0
A1
B2
C3
2021 年 7 月 1 日
0
0
0
我想要这个:
第 1 列
Col2
第 3 列
日期
Value_1_full
Value_2_full
旗帜
A1
B1
C1
2021 年 1 月 1 日
0
100
0
A1
B1
C1
2021 年 2 月 1 日
0
100
0
A1
B1
C1
2021 年 3 月 1 日
10
200
0
A1
B1
C1
2021 年 4 月 1 日
60
200
0
A1
B1
C1
2021 年 5 月 1 日
60
210
1
A1
B1
C1
01Jun2021
70
210
1
A1
B1
C1
2021 年 7 月 1 日
70
210
1
A1
B2
C3
2021 年 1 月 1 日
0
0
0
A1
B2
C3
2021 年 2 月 1 日
0
20
1
A1
B2
C3
2021 年 3 月 1 日
10
40
1
A1
B2
C3
2021 年 4 月 1 日
50
60
1
A1
B2
C3
2021 年 5 月 1 日
50
60
1
A1
B2
C3
01Jun2021
80
60
1
A1
B2
C3
2021 年 7 月 1 日
80
60
1
如果我拥有的唯一数据是一个人的数据,我可以这样做,但是有很多数据。我写的代码只是给了我列的总累积量 - 我无法弄清楚如何为每个人分别计算它们。出于类似的原因,我也在努力为标志列编写代码。我已经把代码放在下面,非常感谢任何帮助/建议。
注意:我对 SAS 真的很陌生,为了写这个问题,我一直在努力通过输入此示例的数据来正确输入日期字段(我使用了下面代码的“忽略”位作为解决方法将其放入 SAS)所以如果您能告诉我我在这里做错了什么,那也将不胜感激!
data data_1;
input Col1 $ Col2 $ Col3 $ Date date8. Ignore Value_1 Value_2 Flag;
format Date date8.;
datalines;
A1 B1 C1 "'01Jan2021'd" 0 100 0
A1 B1 C1 "'01Feb2021'd" 0 0 0
A1 B1 C1 "'01Mar2021'd" 10 100 0
A1 B1 C1 "'01Apr2021'd" 50 0 0
A1 B1 C1 "'01May2021'd" 0 10 1
A1 B1 C1 "'01Jun2021'd" 10 0 0
A1 B1 C1 "'01Jul2021'd" 0 0 0
A1 B2 C3 "'01Jan2021'd" 0 0 0
A1 B2 C3 "'01Feb2021'd" 0 20 1
A1 B2 C3 "'01Mar2021'd" 10 20 0
A1 B2 C3 "'01Apr2021'd" 40 20 0
A1 B2 C3 "'01May2021'd" 0 0 0
A1 B2 C3 "'01Jun2021'd" 30 0 0
A1 B2 C3 "'01Jul2021'd" 0 0 0
;
run;
Data data_2;
set data_1;
drop Ignore;
run;
proc sort data=data_2
out=data_3;
by Col1 Col2 Col3 Date;
run;
data data_4;
set data_3;
by Col1 Col2 Col3 Date;
retain Col1 Col2 Col3 Date Value_1 Value_2 Flag Value_1_full Value_2_full;
if first.Col1 AND first.Col2 AND first.Col3 AND first.Date then Value_1_full = Value_1;
else Value_1_full = Value_1_full + Value_1;
run;
最佳答案
所以你很接近!我认为这到达那里......
proc sort data=data_1(drop=ignore)
out=data_3;
by Col1 Col2 Col3 Date;
run;
data data_4;
set data_3;
by Col1 Col2 Col3 Date;
retain Col1 Col2 Col3 Date Value_1 Value_2 Flag Value_1_full Value_2_full;
if first.Col3 then Value_1_full = Value_1;
else Value_1_full = Value_1_full + Value_1;
if first.col3 then flag=0;
flag = max(flag,flag_Early);
run;
只有一些小的变化。我删除了一个无意义的数据步骤(
drop
可以在您使用数据的任何其他地方完成)并更改
if first.
成为
if first.col3
.
col2
和
col1
-
first.col3
是你关心的,另外两个变化也会引起
first.col3
默认情况下也是如此。
First.date
那里 -
first.date
每次更改日期(或在
by
之前的任何其他变量)时都是真的,而且每一行都会发生这种情况,所以它总是真的!你不想那样。
flag
您需要创建一个新变量。旧变量实际上总是被保留!但它们也会在每次迭代中被新值替换。所以我们将它重命名为
flag_early
或任何你喜欢的,并使用
max
函数将 1 分配给
flag
任何时候 flag_early 有 1 或保留 1 标志,如果它从之前有它 - 每次再次重置它
first.col3
是真的。
关于sas - 基于其他几个列创建半累积列。 SAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69812474/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!