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

标签 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    

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

最佳答案

试试这个(我假设你的数据框叫做 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/

相关文章:

apache-spark - 使用 Pyspark 进行虚拟编码

r - 从我的数据框中创建虚拟变量矩阵;使用 `NA` 表示缺失值

r - 如何为海洋着色?

R-在 Mac 上安装并运行多个 R 版本

r - 在 Roxygen/Rd 代码示例中使用不平衡支撑

python - 将所有嵌套列表调整为相同的长度

java - 用于循环为扫描仪输入添加变量

r - 基于其他列创建虚拟列

r - 使用 ggmap : clipping when shape file is larger than ggmap 绘制形状文件

python - 如何使用 for 循环对一组数据帧运行操作?