カラムタイプを維持することが重要な場合は、do.call(cbind, split(mydf, 1:nrow(mydf)))
を試すことができます。
例:
mydf <- structure(list(id = 1:3, var1 = structure(1:3, .Label = c("a",
"d", "g"), class = "factor"), var2 = c("b", "e", "h"), var3 = c("c",
"f", "i")), .Names = c("id", "var1", "var2", "var3"), row.names = c(NA,
3L), class = "data.frame")
^^これはあなたのデータのようなものですが、 "VAR1" 欄は、要因です。
do.call(cbind, split(mydf, 1:nrow(mydf)))
# 1.id 1.var1 1.var2 1.var3 2.id 2.var1 2.var2 2.var3 3.id 3.var1 3.var2 3.var3
# 1 1 a b c 2 d e f 3 g h i
str(.Last.value)
# 'data.frame': 1 obs. of 12 variables:
# $ 1.id : int 1
# $ 1.var1: Factor w/ 3 levels "a","d","g": 1
# $ 1.var2: chr "b"
# $ 1.var3: chr "c"
# $ 2.id : int 2
# $ 2.var1: Factor w/ 3 levels "a","d","g": 2
# $ 2.var2: chr "e"
# $ 2.var3: chr "f"
# $ 3.id : int 3
# $ 3.var1: Factor w/ 3 levels "a","d","g": 3
# $ 3.var2: chr "h"
# $ 3.var3: chr "i"
^^注意してください。列クラスは保持されます。
少しgsub
は、期待していた列名を取得できます。
または、(2つの追加の列、値が「1」で満たされた1つ、1からデータセット内の行数に配列と他を追加し、あなたの「ID」としてそれを使用することができますreshape
関数、またはvalue.var
の複数の変数を受け入れるバージョンのdcast
のようなものを使用して、 "LHS"と "時間"(RHS)
私はちょうど 'unlist(df)'があなたの望むことをしていると思います。(あなたには何もありません。あるいは 'c(t(df))'は、名前のない順番で値を与えます。 –
または、私は 'do.call(cbind、split(mydf、1:nrow(mydf)))'と思っていますが、* why *? – A5C1D2H2I1M1N2O1R2T1