【问题标题】:R reshape and subset data frames in listR在列表中重塑和子集数据帧
【发布时间】: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 中编程的方式是每次为每个行业处理一个文件。

标签: r dataframe


【解决方案1】:

如果您将数据放在名为myList 的列表中,您可以轻松地将整个数据转换为数据框:

myDF <- do.call(rbind, myList)

然后你可以尝试重塑你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多