各季度数据不同的面板数据如何组合识别?

How to combine and then identify panel data with different data for each quarter?

我每年每个季度都有 4 个数据库,我想合并它们以将所有 4 个季度都集中在一个数据库中。我想为每个季度创建一个指标,但我不知道该怎么做。我没有将季度作为数据中的变量提及,但 4 个数据库(4 个季度)遵循相同的个人。

假设您的数据框名为“quarter.X”,您可以使用 ls 列出这些名称,然后使用 mget 将它们放入新列表“quarters”中rbind 他们。对于 rbind 多个数据帧,我们使用 do.call 在列表上调用 rbind

rbinding 之前,我们使用替换函数 `[<-` 创建季度指标;使用 Map 我们遍历宿舍列表并从序列 1:4 中逐一添加 value=。由于 ls 默认按字母顺序对名称进行排序,因此如果数据框是正确的名称,这是安全的。 示例:

quarters <- mget(ls(pattern="quarter.\d$"))

res <- do.call(rbind, Map(`[<-`, quarters, "quarter", value=1:4))
res
#             id         x1         x2          x3 quarter
# quarter.1.1  1  1.3709584  0.6328626  1.51152200       1
# quarter.1.2  2 -0.5646982  0.4042683 -0.09465904       1
# quarter.1.3  3  0.3631284 -0.1061245  2.01842371       1
# quarter.2.1  1 -0.0627141 -1.3888607  0.63595040       2
# quarter.2.2  2  1.3048697 -0.2787888 -0.28425292       2
# quarter.2.3  3  2.2866454 -0.1333213 -2.65645542       2
# quarter.3.1  1 -2.4404669 -1.7813084  1.89519346       3
# quarter.3.2  2  1.3201133 -0.1719174 -0.43046913       3
# quarter.3.3  3 -0.3066386  1.2146747 -0.25726938       3
# quarter.4.1  1 -1.7631631  0.4554501 -0.60892638       4
# quarter.4.2  2  0.4600974  0.7048373  0.50495512       4
# quarter.4.3  3 -0.6399949  1.0351035 -1.71700868       4

如果行名称打扰您,然后使用 rownames(res) <- NULL 获得连续的数字。


数据:

set.seed(42)
quarter.1 <- data.frame(id=1:3, x1=rnorm(3), x2=rnorm(3), x3=rnorm(3))
quarter.2 <- data.frame(id=1:3, x1=rnorm(3), x2=rnorm(3), x3=rnorm(3))
quarter.3 <- data.frame(id=1:3, x1=rnorm(3), x2=rnorm(3), x3=rnorm(3))
quarter.4 <- data.frame(id=1:3, x1=rnorm(3), x2=rnorm(3), x3=rnorm(3))