こんにちはデータフレームをRからエクスポートしてAMPLで使用するために、特定のフォーマットに変換しようとしています。データフレームを部分集合化する代わりにプログラマチックに並べ替え
私の最初のdaraframeは、以下の
test <- structure(list(from = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
to = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3), beta = c(0.0214674078064637,
0.0205966237172006, 0.0197611613089226, 0.0214674078064637,
0.0205966237172006, 0.0197611613089226, 0.0214674078064637,
0.0205966237172006, 0.0197611613089226, 0.0214674078064637,
0.0205966237172006, 0.0197611613089226), Time = c(0L, 0L,
0L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA,
-12L), .Names = c("from", "to", "beta", "Time"))
これは私の所望の最終結果はこの1つであるテストdata.frame
from to beta Time
1 1 1 0.02146741 0
2 1 2 0.02059662 0
3 1 3 0.01976116 0
4 1 1 0.02146741 1
5 1 2 0.02059662 1
6 1 3 0.01976116 1
7 1 1 0.02146741 2
8 1 2 0.02059662 2
9 1 3 0.01976116 2
10 1 1 0.02146741 3
11 1 2 0.02059662 3
12 1 3 0.01976116 3
である:私のやり方
V T1 0 T2 1 T3 2 T4 3 line
1 [1,1,*] 0 0.02146741 1 0.02146741 2 0.02146741 3 0.02146741 \n
2 [1,2,*] 0 0.02059662 1 0.02059662 2 0.02059662 3 0.02059662 \n
3 [1,3,*] 0 0.01976116 1 0.01976116 2 0.01976116 3 0.01976116 \n
これは今のところこれです:
Betas <- unite_(test, col = "V", sep = ",", from = c("from", "to"))
Betas <- spread(Betas, key = Time, value = beta)
Betas$V <- paste("[", Betas$V, ",*]", sep = "")
Betas$T1 <- 0
Betas$T2 <- 1
Betas$T3 <- 2
Betas$T4 <- 3
Betas <- Betas[,c(1,6,2,7,3,8,4,9,5)]
Betas$line <- "\n"
私はコード
Betas <- unite_(test, col = "V", sep = ",", from = c("from", "to"))
Betas <- spread(Betas, key = Time, value = beta)
Betas$V <- paste("[", Betas$V, ",*]", sep = "")
の私の最初の3行のプロセスが好きしかし、私は怒鳴るラインを交換したいと思い、この理由は、時間列がX回繰り返すことができることです。今度はいつも0からXへ行くでしょう、私はプログラム的にXの値を知っていますか?
Betas$T1 <- 0
Betas$T2 <- 1
Betas$T3 <- 2
Betas$T4 <- 3
Betas <- Betas[,c(1,6,2,7,3,8,4,9,5)]
Betas$line <- "\n"
おかげで、私はより多くの答えがあるかどうかだけをチェックするために時間のカップルを開くことを保持しますが、これは素晴らしい作品 –