如何在R中为特定范围创建虚拟变量?

时间:2018-04-05 14:43:37

标签: r for-loop dummy-variable

我有一个数据集,其中包含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    

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:3)

试试这个(我假设你的数据框叫df

df$dummy <- cumsum(df$start - df$end) + df$end

编辑:要容纳一个事件在另一个事件结束的同时开始的行,您可以使用以下内容,稍微难以阅读版本:

df$dummy <- as.numeric((cumsum(df$start - df$end) + df$end) > 0)