我正在尝试将虚拟变量添加到具有时间、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
我无法接近,我正在考虑stata逻辑(如果是这样,则生成变量,这是别的东西)但我在R中最接近的是创建单独的国家假人,然后将每个与时间变量和子集绑定它们在时间变量上,然后提取所有单个虚拟对象并将它们添加在一起,然后再将其与我的原始数据绑定。这不可能接近最佳解决方案(并且不完全有效),因为它大约有 40 行代码......这应该很容易做到,不是吗?
任何帮助都会很棒!
ps:我的尝试是这样的:
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))
但我认为我走错了方向,我无法正确获得时间维度......