【问题标题】:Dummy variable with time and id condition in long panel长面板中具有时间和 id 条件的虚拟变量
【发布时间】:2014-06-27 14:56:01
【问题描述】:

我正在尝试将虚拟变量添加到具有时间、id 和许多其他变量的面板数据集中。

library(zoo)
geo = c("AT","AT","AT","BE","BE","BE","DE","DE","DE")
time = c("1990Q1","1990Q2","1990Q3","1990Q1","1990Q2","1990Q3","1990Q1","1990Q2","1990Q3")
Data <- as.data.frame(cbind(geo, time))
Data$time = as.yearqtr(Data$time)

实际上有 20 个国家和 97 个季度。我不会一个一个地解决'geo'元素,但是(时间> 2004Q1)例如会很棒

我想要一个从 1990 年第二季度开始的奥地利和德国的假人。所以我想到达:

    geo time     dummmy
1   AT  1990 Q1  0
2   AT  1990 Q2  1
3   AT  1990 Q3  1
4   BE  1990 Q1  0
5   BE  1990 Q2  0
6   BE  1990 Q3  0
7   DE  1990 Q1  0
8   DE  1990 Q2  1
9   DE  1990 Q3  1

我无法接近,我正在考虑一个统计逻辑(如果是这样,则生成变量,这是别的东西)但我在 R 中最接近的是创建单独的国家虚拟对象,然后与时间绑定每个变量并在时间变量上对它们进行子集化,然后提取所有单个虚拟变量并将它们加在一起,然后再将其与我的原始数据绑定。这不可能接近最佳解决方案(并且不能完全工作),因为它大约有 40 行代码......这应该很容易做到,不是吗?

任何帮助都会很棒!

附言: 我的尝试是这样的:

AT <- as.numeric(Data$geo == "AT")
DE <- as.numeric(Data$geo == "DE")

AT <- as.data.frame(cbind(Data$time, AT))
DE <- as.data.frame(cbind(Data$time, DE))

但我认为我走错了方向,我无法正确获取时间维度...

【问题讨论】:

    标签: r zoo dummy-data


    【解决方案1】:

    看来您必须将zoo 库用于as.yearqtr 函数。如果是这种情况,这会使“时间”列与标准比较运算符具有可比性。所以基本上看起来你只想要时间>“1990Q1”和“geo”是“AT”或“DE”的所有值。你可以这样做

    Data$dummy<-(Data$time>as.yearqtr("1990Q1") & Data$geo %in% c("AT","DE"))+0
    

    这里做+0把逻辑真/假变成0/1

    【讨论】:

    • 完美!这正是我一直在寻找的。谢谢你们! :-)
    【解决方案2】:

    您可以使用与yearqtr 对象的标准比较,因此请尝试:

    Data$time >= "1990 Q2"
    # [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
    Data$geo %in% c("AT", "DE") & Data$time >= "1990 Q2"
    # [1] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
    
    Data$dummy <- as.numeric(Data$geo %in% c("AT", "DE") & Data$time >= "1990 Q2")
    Data
    #   geo    time dummy
    # 1  AT 1990 Q1     0
    # 2  AT 1990 Q2     1
    # 3  AT 1990 Q3     1
    # 4  BE 1990 Q1     0
    # 5  BE 1990 Q2     0
    # 6  BE 1990 Q3     0
    # 7  DE 1990 Q1     0
    # 8  DE 1990 Q2     1
    # 9  DE 1990 Q3     1
    

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 2016-06-01
      • 2016-11-30
      • 1970-01-01
      • 2018-08-02
      • 2013-02-07
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      相关资源
      最近更新 更多