3

私のデータは次のように設定されています:

site    date      amb   ppm1   ppm2   ppm3   time0   time1   time2   time3
A       5/6/12     350   370    380   385     0       3        6       9

2列の形式で必要です(1つは濃度で、もう1つは時間です)

conc   time
350      0
370      3
380      6
385      9

その上で回帰を実行できるようにします。または、元のセットアップで回帰を実行する方法を手伝ってください。

4

3 に答える 3

3

サンプルデータを使用し、あなたdata.frameが「mydf」と呼ばれると仮定するとstack、列の「セット」ごとに使用して、表示する出力を取得できます。

setNames(data.frame(stack(mydf[, grep("^ppm|^amb", names(mydf))])[-2], 
                    stack(mydf[, grep("^time", names(mydf))])[-2]), 
         c("conc", "time"))
#   conc time
# 1  350    0
# 2  370    3
# 3  380    6
# 4  385    9
  • grep類似した名前の列が多数あり、それらの列インデックスを識別するために数えたくない場合の例として使用されました。これがデータを真に代表するものである場合は、stack単に と になることもstack(mydf[, 3:6])[-2]ありstack(mydf[, 7:10])ます。
  • setNames出力の列名の名前を変更する便利な関数です。
  • は、各コマンドから 2 番目の列 (値が取得された列名の列) を[-2]削除するだけです。stack

「abm」の変数名を「ppm0」に変更しても構わない場合は、別のオプションを使用しますreshape

names(mydf)[3] <- "ppm0"
reshape(mydf, direction = "long", idvar = 1:2, 
        timevar = "measure", varying = 3:ncol(mydf), sep = "")
#            site   date measure ppm time
# A.5/6/12.0    A 5/6/12       0 350    0
# A.5/6/12.1    A 5/6/12       1 370    3
# A.5/6/12.2    A 5/6/12       2 380    6
# A.5/6/12.3    A 5/6/12       3 385    9

もちろん、最初の 3 つの列は非常に簡単に削除できます。

于 2013-03-13T06:31:42.657 に答える
2

データが単一のベクトルの場合:

> mydata <- c("A", "5/6/12", 350, 370, 380, 385, 0, 3, 6, 9)

あなたの名前が追加されました:

> names(mydata) <- c("site", "date", "amb" ,"ppm1","ppm2","ppm3","time0","time1","time2","time3")

上記のように見えます:

> mydata
  site     date      amb     ppm1     ppm2     ppm3    time0    time1    time2    time3 
  "A"  "5/6/12"    "350"    "370"    "380"    "385"      "0"      "3"      "6"      "9"

それを変換するには、次のようにします。

> data.frame(conc=mydata[3:6],time=mydata[7:10])

その結果、

       conc time
  amb   350    0
  ppm1  370    3
  ppm2  380    6
  ppm3  385    9
于 2013-04-13T01:34:48.320 に答える
1

正規表現を使用して文字列を分割し、2 つのベクトル (濃度と時間) を取得する必要があります。また、R を使用している場合は、呼び出すだけでデータ フレームを作成できます。

data.frame(concentration=concentration,time=time) 

あなたの2つのベクトルに。

于 2013-03-12T21:06:23.633 に答える