r - 如何将面板数据与每个季度的不同数据进行组合然后识别?
问题描述
我每年每个季度都有 4 个数据库,我想将它们合并以将所有 4 个季度放在一个基础上。我想为每个季度创建一个指标,但我不知道该怎么做。我没有将季度作为数据中的变量提及,但 4 个数据库(4 个季度)关注同一个人。
解决方案
假设您有名为“quarter.X”的数据框,您可以使用列出这些名称ls
并将它们放入新列表“季度”中,mget
按顺序使用rbind
。对于我们用来调用列表的rbind
多个数据框。do.call
rbind
在rbind
ing 之前,我们使用替换功能创建季度指标`[<-`
;使用Map
我们遍历季度列表并value=
从序列中1:4
一个一个地添加。由于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))
推荐阅读
- java - 有没有办法使用安全规则检查 Cloud Firestore 集合的大小?
- java - 我应该如何在 Java Web 应用程序中存储持久数据?
- react-native - 我可以将数组传递给 React Native ScrollView 吗?
- java - 获取 ArrayBlockingQueue 的容量
- php - 使用 PHP/Laravel 批量解析多个 XML 文件
- python - 训练我保存的 tensorflow 模型时出错
- python - Python - TypeError:需要一个整数(获取类型 datetime.datetime)
- python - 如何在python中使用特定路径调节excel文件的标题
- java - 字母数字序列生成器
- powershell - Power Shell 获取服务问题