0
我有一个包含10个元素(股票1..10)每个看起来像这样的列表data
:如何合并列表中的帧?
test <- data$Stock1
> head(test)
names date_tmp efficiency
1 Stock1 2010-11-04 0.5674100
11 Stock1 2010-11-05 0.2945661
21 Stock1 2010-11-08 0.6318756
31 Stock1 2010-11-09 0.3203930
41 Stock1 2010-11-10 0.8075944
51 Stock1 2010-11-11 1.0000000
我要合并在此列表中的所有帧的列。我有以下的代码,我适应从别的地方:
new_frame <- do.call(cbind,Map(cbind, lapply(data, as.data.frame)))
我的问题是,最终的结果看起来很凌乱:
Stock1.names Stock1.date_tmp Stock1.efficiency Stock10.names Stock10.date_tmp Stock10.efficiency Stock2.names
1 Stock1 2010-11-04 0.5674100 Stock10 2010-11-04 1.0000000 Stock2
11 Stock1 2010-11-05 0.2945661 Stock10 2010-11-05 1.0000000 Stock2
21 Stock1 2010-11-08 0.6318756 Stock10 2010-11-08 1.0000000 Stock2
31 Stock1 2010-11-09 0.3203930 Stock10 2010-11-09 1.0000000 Stock2
41 Stock1 2010-11-10 0.8075944 Stock10 2010-11-10 0.0000000 Stock2
51 Stock1 2010-11-11 1.0000000 Stock10 2010-11-11 0.8065724 Stock2
Stock2.date_tmp Stock2.efficiency Stock3.names Stock3.date_tmp Stock3.efficiency Stock4.names Stock4.date_tmp
1 2010-11-04 1 Stock3 2010-11-04 1 Stock4 2010-11-04
11 2010-11-05 1 Stock3 2010-11-05 0 Stock4 2010-11-05
21 2010-11-08 1 Stock3 2010-11-08 1 Stock4 2010-11-08
31 2010-11-09 0 Stock3 2010-11-09 1 Stock4 2010-11-09
41 2010-11-10 1 Stock3 2010-11-10 1 Stock4 2010-11-10
51 2010-11-11 1 Stock3 2010-11-11 1 Stock4 2010-11-11
Stock4.efficiency Stock5.names Stock5.date_tmp Stock5.efficiency Stock6.names Stock6.date_tmp
1 1 Stock5 2010-11-04 0.5218197 Stock6 2010-11-04
11 1 Stock5 2010-11-05 0.6762827 Stock6 2010-11-05
21 1 Stock5 2010-11-08 0.7991099 Stock6 2010-11-08
31 1 Stock5 2010-11-09 0.5613898 Stock6 2010-11-09
41 1 Stock5 2010-11-10 0.5531570 Stock6 2010-11-10
51 1 Stock5 2010-11-11 0.8151261 Stock6 2010-11-11
Stock6.efficiency Stock7.names Stock7.date_tmp Stock7.efficiency Stock8.names Stock8.date_tmp
1 0.5498426 Stock7 2010-11-04 1 Stock8 2010-11-04
11 0.5534652 Stock7 2010-11-05 1 Stock8 2010-11-05
21 0.3897874 Stock7 2010-11-08 1 Stock8 2010-11-08
31 0.4405610 Stock7 2010-11-09 1 Stock8 2010-11-09
41 0.8180463 Stock7 2010-11-10 1 Stock8 2010-11-10
51 0.1491688 Stock7 2010-11-11 1 Stock8 2010-11-11
Stock8.efficiency Stock9.names Stock9.date_tmp Stock9.efficiency
1 0 Stock9 2010-11-04 0.2756548
11 1 Stock9 2010-11-05 0.5204240
21 1 Stock9 2010-11-08 0.0000000
31 1 Stock9 2010-11-09 0.7940347
41 1 Stock9 2010-11-10 0.6393697
51 1 Stock9 2010-11-11 0.0000000
>
我想只有1包含列日期和得分效率排命名为“Stock1 ... 10”。我认为从上面发布的循环函数中做到这一点更有效,而不是试图从新数据框中删除额外的东西。任何帮助表示赞赏
是[这](http://stackoverflow.com/问题/ 8091303 /同时合并多个数据帧的列表)是你想要的?几乎是第一次在你的头衔中击中Google。 –
也许'library(data.table); dcast(rbindlist(data),date_tmp〜names,value.var ='efficiency')' – akrun
谢谢。正是我所期待的 –