各季度数据不同的面板数据如何组合识别?
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
。
在 rbind
ing 之前,我们使用替换函数 `[<-`
创建季度指标;使用 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))
我每年每个季度都有 4 个数据库,我想合并它们以将所有 4 个季度都集中在一个数据库中。我想为每个季度创建一个指标,但我不知道该怎么做。我没有将季度作为数据中的变量提及,但 4 个数据库(4 个季度)遵循相同的个人。
假设您的数据框名为“quarter.X”,您可以使用 ls
列出这些名称,然后使用 mget
将它们放入新列表“quarters”中rbind
他们。对于 rbind
多个数据帧,我们使用 do.call
在列表上调用 rbind
。
在 rbind
ing 之前,我们使用替换函数 `[<-`
创建季度指标;使用 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))