我想创建一个虚拟的面板数据集,其中包含100个面板观测值(50对),并具有以下变量:panelID,国家和年份。这意味着每个panelID应该具有相同的国家/地区,但应具有不同的年份(什么年都无所谓,但假设相隔4年)。
我已经尝试执行以下操作,但是它不起作用。
panelID = c(1:50)
year= c(2001:2010)
country = c("NLD", "GRC", "GBR")
DT <- data.table(expand.grid(panelID, year, country))
我应该怎么做?
所需的输出,例如:
DT1 <- fread(
"panelID coutry year
1 NLD 2002
1 NLD 2006
2 GBR 2001
2 GBR 2005
3 GRC 2001
3 GRC 2005
4 NLD 2004
4 NLD 2008
5 GBR 2006
5 GBR 2010
6 GRC 2005
6 GRC 2009",
header = TRUE)
答案 0 :(得分:1)
我认为这是预期结果:
panelID = c(1:50)
year= c(2001:2010)
country = c("NLD", "GRC", "GBR")
n <- 2
library(data.table)
set.seed(123)
data.table(panelID = rep(sample(panelID), each = n),
country = rep(sample(country, length(panelID), replace = T), each = n),
year = c(replicate(length(panelID), sample(year, n))))
panelID country year
1: 31 GBR 2010
2: 31 GBR 2005
3: 15 NLD 2005
4: 15 NLD 2008
5: 14 GRC 2003
6: 14 GRC 2002
7: 3 NLD 2010
8: 3 NLD 2002
9: 42 NLD 2010
10: 42 NLD 2006
... 100 rows total
相隔4年:
#for 4 years apart
set.seed(123)
years <- sample(2001:2006, length(panelID), replace = T)
set.seed(123)
data.table(panelID = rep(sample(panelID), each = n),
country = rep(sample(country, length(panelID), replace = T), each = n),
year = c(t(matrix(c(years, years+4), ncol = n))))