使用R下载Google趋势数据

时间:2014-09-25 17:09:05

标签: r list dataframe

我在StackOverflow上找不到类似的问题。如果它在那里我道歉...

我有一个数据框列表,所有数据框都有日期列和每个日期的值。我想将此列表合并为一个数据框,一个数据列,以及每个列表中的值。

我有这个:

> list
$IBM
         Date IBM
1  2012-03-01  98
2  2012-03-02  94
3  2012-03-03  49
4  2012-03-04  48

$AAPL
         Date AAPL
1  2012-03-01   43
2  2012-03-02   38
3  2012-03-03   13
4  2012-03-04   10

$HPQ
         Date HPQ
1  2012-03-01  62
2  2012-03-02  67
3  2012-03-03  24
4  2012-03-04  37

我想这样:

         Date    IBM   AAPL    HPQ
1  2012-03-01     98     43     62
2  2012-03-02     94     38     67
3  2012-03-03     49     13     24
4  2012-03-04     48     10     37

使用do.call("cbind", list)我明白了:

> do.call("cbind", test)
IBM.Date IBM.IBM  AAPL.Date AAPL.AAPL   HPQ.Date HPQ.HPQ

1  2012-03-01      98 2012-03-01        43 2012-03-01      62
2  2012-03-02      94 2012-03-02        38 2012-03-02      67
3  2012-03-03      49 2012-03-03        13 2012-03-03      24
4  2012-03-04      48 2012-03-04        10 2012-03-04      37`

这与我想要的非常相似,但有多个重复的日期列。有没有办法做到这一点?优选在基础包装中?

感谢!!!

1 个答案:

答案 0 :(得分:1)

如果您的列表看起来像这样

#sample data
dts<-c("2012-03-01","2012-03-02","2012-03-03","2012-03-04")
dd<-list(
  IBM=data.frame(Date=dts, IBM=c(98,94,49,48)),
  APPL=data.frame(Date=dts, APPL=c(43,38,13,10)),
  HPQ=data.frame(Date=dts, HPQ=c(62,67,24,37))
)

然后您可以使用

创建所需的输出
Reduce(merge, dd)
#         Date IBM APPL HPQ
# 1 2012-03-01  98   43  62
# 2 2012-03-02  94   38  67
# 3 2012-03-03  49   13  24
# 4 2012-03-04  48   10  37