【发布时间】:2018-11-26 19:10:01
【问题描述】:
我在 R 中有一个类似于下面的数据框,其中列是年份和周数,每一行都是特定的人。为了获得特定 ID 的相关输入数据,我有一个指标,即该人是在 2015 年还是 2016 年失业IND15和IND16。如果观察结果为“1”,则该人失业,如果观察结果为“0”,则该人被雇用:
ID y12_01 y12_02 y12_03 y12_04... y12_51 y12_52 y13_01 IND12 IND13
01 1 1 1 0 0 1 1 1 1
02 1 1 1 1 1 1 1 1 1
03 0 0 1 1 0 0 1 1 1
正如您在上面的示例中看到的那样,一些行显示了 2012 年和 2013 年的失业情况。如果该人从 2015 年开始只有失业序列(只有 1 个),我想创建一个指标,如果这个人在序列中有一个“中断”(即 ID01 或 ID03),我想创建一个指标。
我怀疑部分解决方案可能包括 rowSums 或 while 循环,但到目前为止我还没有运气。在 SAS 中,我认为也许可以使用数组函数,但我再次不确定如何在 R 语言中完成。
【问题讨论】:
-
我认为如果您有一个包含
ID, year, month, unemployment_flag列的长文件,这将更容易处理。然后,您只需使用任意数量的 R 函数(aggregate、dplyr包、data.table包)等进行“分组”操作。使用类似于 SAS 数组代码的宽格式工作会过于复杂.事实上,我可能会在 SAS 中做同样的事情 -proc transpose然后proc sql + group by针对长格式数据文件。 -
转置有什么注意事项吗?当我创建了我需要的指标后,我将删除所有 yyy_ww 列并加入一个带有背景信息的数据框。不过,当我完成指标时,我总是可以将其转回。它已经是一个“长”数据集,因为我有大约 700.000 行。
标签: r loops count time-series