我有一个数据集,其中包含从 1990 年到 2017 年的每日观察数据。列的开始和结束(下方)显示了某个政治示威的开始和结束。我如何创建一个虚拟变量,该虚拟变量在事件进行的每一天都取值 1,如虚拟列中所示。
date cc country start end dummy
9/6/1991 20 Canada 0 0
9/7/1991 20 Canada 0 0
9/8/1991 20 Canada 0 0
9/9/1991 20 Canada 0 0
9/10/1991 20 Canada 1 0 1
9/11/1991 20 Canada 0 0 1
9/12/1991 20 Canada 0 0 1
9/13/1991 20 Canada 0 0 1
9/14/1991 20 Canada 0 0 1
9/15/1991 20 Canada 0 0 1
9/16/1991 20 Canada 0 0 1
9/17/1991 20 Canada 0 1 1
9/18/1991 20 Canada 0 0
9/19/1991 20 Canada 0 0
9/20/1991 20 Canada 0 0
9/21/1991 20 Canada 0 0
9/22/1991 20 Canada 0 0
9/23/1991 20 Canada 0 0
9/24/1991 20 Canada 0 0
9/25/1991 20 Canada 0 0
9/26/1991 20 Canada 0 0
9/27/1991 20 Canada 0 0
9/28/1991 20 Canada 1 0 1
9/29/1991 20 Canada 0 0 1
9/30/1991 20 Canada 0 0 1
10/1/1991 20 Canada 0 0 1
10/2/1991 20 Canada 0 1 1
10/3/1991 20 Canada 0 0
10/4/1991 20 Canada 0 0
10/5/1991 20 Canada 0 0
10/6/1991 20 Canada 0 0
10/7/1991 20 Canada 0 0
非常感谢任何帮助。谢谢!
最佳答案
试试这个(我假设你的数据框叫做 df
:
df$dummy <- cumsum(df$start - df$end) + df$end
编辑:为了适应一个事件同时开始另一个事件结束的行,您可以使用以下稍微难以阅读的版本:
df$dummy <- as.numeric((cumsum(df$start - df$end) + df$end) > 0)
关于r - 如何为 R 中的特定范围创建虚拟变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49675178/