0

data.frameに次のようなSQL出力があります。

  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で分割し、mergeを使用してリストをループする関数があります。組み込み関数を使用してこれを行うためのより良い方法はありますか?私は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

パッケージdcastから使用できます:reshape2

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 に答える