【发布时间】:2015-07-12 13:47:26
【问题描述】:
我的问题如下:我想在新数据帧中对每个数据帧的某些组合列进行子集化。我需要这样做,因为我想单独对每个 DF 进行进一步计算。
1.我将我的数据组织在一个包含四个数据框的列表中,每个数据框都包含一个为期一年的变量。
nms <- c(paste0("tiva.EXGR.wide",c(1995,
2005)),paste0("tiva.VA.wide",c(1995, 2005)))
df.list <- lapply(nms, get)
数据框 1:出口测量 1,1995 年,26 列:
|COU |PAR | Time| C01T05| C10T14| C15T16|
|:---|:---|----:|------:|------:|------:|
|ARG |ARG | 1995| 0.00| 0.00| 0.00|
|ARG |AUS | 1995| 0.83| 0.17| 14.87|
|ARG |AUT | 1995| 1.66| 0.00| 2.59|
数据框 2:出口量度 2,1995 年,26 列:
|COU |PAR | Time| C01T05| C10T14| C15T16|
|:---|:---|----:|------:|------:|------:|
|ARG |ARG | 2005| 0.00| 0.00| 0.00|
|ARG |AUS | 2005| 2.50| 2.20| 22.48|
|ARG |AUT | 2005| 3.57| 0.09| 13.64|
如果我要对所有数据框重复它,我可以这样做。
tive.VA.2005.10t14
所以结果应该是这样的:
|COU | ARG| AUS| AUT|
|:---|------:|----:|----:|
|ARG | 0.00| 2.20| 0.09|
|AUS | 492.73| 0.00| 8.36|
|AUT | 0.05| 0.50| 0.00|
|BEL | 0.26| 0.29| 1.30|
|BGR | 0.01| 0.02| 1.19|
|BRA | 823.07| 8.18| 0.92|
但我想以这样一种方式对其进行编程,即我会运行一个循环并在一个新列表中创建一个数据框。在每个数据帧中,我想包括三列,第一列和两列来自原始数据帧,然后是该数据帧的第三列,在每次迭代中都会继续。我试着用这种方式来做。
for (i in 4:26) {
EXGR.1995<-NULL
EXGR.2005<-NULL
EXGR.1995[[i]]<-(df.list[[1]][,c(1,2,i)])
EXGR.2005[[i]]<-(df.list[[3]][,c(1,2,i)])
}
【问题讨论】:
-
如果你在所有数据集中都有完全相同的列,你为什么要坚持把它们放在一个列表中?
-
最后我的目标是为每个行业建立一个数据框,其中的列是从 COU 到 PAR 的每次导出的值。我需要这种数据结构来保存它并用它来计算每个行业的中心性。我在 stata 中编程的方式是每次为每个行业处理一个文件。