0

我有一个 sql 输出到一个 data.frame 中,如下所示:

  dateTime              resultMean           SensorDescription
1 2009-01-09 21:35:00   7.134589             Aanderaa Optode - Type 3835
2 2009-01-09 21:35:00   7.813000         Seabird SBE45 Thermosalinograph
3 2009-01-09 21:35:00   8.080399 Turner SCUFA II Chlorophyll Fluorometer
4 2009-01-09 21:35:00   7.818604                          ADAM PT100 PRT
5 2009-01-09 21:36:00   7.818604                          ADAM PT100 PRT

我想把它变成这样的框架:

  dateTime              Aanderaa Optode - Type 3835  Seabird SBE45 Thermosalinograph   Turner SCUFA II Chlorophyll Fluorometer   ADAM PT100 PRT               
1 2009-01-09 21:35:00   7.134589                     7.813000                          8.080399                                  7.818604

目前我有一个由 SensorDescription 拆分的函数,然后通过合并循环遍历列表。有没有更好的方法使用内置函数来做到这一点?我已经查看了 plyr、ddply 等,但没有任何接缝可以满足我的需求。

当前的合并循环函数如下所示:

    listmerge = function(datalist){
    mdat = datalist[[1]][1:2]
    for(i in 2:length(datalist)){
        mdat = join(mdat,datalist[[i]][1:2], by="dateTime", match = "all")
    }
4

1 回答 1

3

您可以dcastreshape2包中使用:

d <- data.frame(x=1, y=letters[1:10], z=runif(10))
dcast(x ~ y, data=d)
Using z as value column: use value.var to override.
  x         a         b         c         d         e         f         g         h        i        j
1 1 0.7582016 0.4000201 0.5712599 0.9851774 0.9971331 0.2955978 0.9895403 0.6114973 0.323996 0.785073

reshape从基本统计包也可以做到这一点,但语法有点困难。

reshape(d, idvar='x', timevar='y', direction='wide')

  x       z.a       z.b       z.c       z.d       z.e       z.f       z.g       z.h      z.i      z.j
1 1 0.7582016 0.4000201 0.5712599 0.9851774 0.9971331 0.2955978 0.9895403 0.6114973 0.323996 0.785073
于 2012-08-14T14:53:52.943 回答