0

問題

ほんの少しのタイピングを使用して、多くの列を持つデータフレームを溶かしたいと思います。

私が使用しているデータフレームには、多くの場合、IDが数字、文字、または要素である可能性のある多くの列があります。IDとMEASURED列は、通常、連続していません。

私は何をしますか?

のようなものはありmelt(mydata, id=c(1:7,9,10,12), measured=c(8,11)ますか?

次のようなデータフレームがあります

id1 <- round(abs(rnorm(5)),1)
id2 <- sample(letters,5)
id3 <- sample(letters,5)
id4 <- sample(letters,5)
id5 <- sample(letters,5)
id6 <- round(abs(rnorm(5)),1)
id7 <- sample(letters,5)
m1 <-  round(abs(rnorm(5)),1)
id8 <- sample(letters,5)
id9 <- sample(letters,5)
m2 <-  round(abs(rnorm(5)),1)
id10 <- sample(letters,5)    
mydata <- data.frame(id1,id2,id3,id4,id5,id6,id7,m1,id8,id9,m2,id10)

その結果....

  id1 id2 id3 id4 id5 id6 id7  m1 id8 id9  m2 id10
1.5   c   i   r   m 1.8   f 0.1   x   g 0.7    t
0.4   n   o   q   b 0.9   s 0.1   f   x 0.0    m
1.6   b   g   s   i 0.7   i 0.5   d   z 1.3    b
0.6   g   s   j   k 0.3   j 0.8   p   i 0.4    d
0.5   z   e   i   s 0.4   r 0.8   k   y 0.9    a

ここで、「id」はIDとして必要な列を意味し、「m」はMEASURED変数として必要な列を意味します。注:私の列は実際には「id_」または「m_」のパターンに従っていません-それらは何でもかまいません。

意図したとおりに正しく、すばやく溶けるようにするにはどうすればよいですか?

書きたくない

melt(mydata, id = c("id1","id2",etc, etc, etc), measured = c("m1","m2))

すべてのID変数が文字である場合、私はただ書くことができることを知っています

melt(mydata, measured = c("m1","m2))

しかし、私は文字/因子ID列を持っているので、この(誤った)出力を取得します

x   id2 id3 id4 id5 id7 id8 id9 id10 variable value
1    c   i   r   m   f   x   g    t      id1   1.5
2    n   o   q   b   s   f   x    m      id1   0.4
3    b   g   s   i   i   d   z    b      id1   1.6
4    g   s   j   k   j   p   i    d      id1   0.6
5    z   e   i   s   r   k   y    a      id1   0.5
6    c   i   r   m   f   x   g    t      id6   1.8
7    n   o   q   b   s   f   x    m      id6   0.9
8    b   g   s   i   i   d   z    b      id6   0.7
9    g   s   j   k   j   p   i    d      id6   0.3
10   z   e   i   s   r   k   y    a      id6   0.4
11   c   i   r   m   f   x   g    t       m1   0.1
12   n   o   q   b   s   f   x    m       m1   0.1
13   b   g   s   i   i   d   z    b       m1   0.5
14   g   s   j   k   j   p   i    d       m1   0.8
15   z   e   i   s   r   k   y    a       m1   0.8
16   c   i   r   m   f   x   g    t       m2   0.7
17   n   o   q   b   s   f   x    m       m2   0.0
18   b   g   s   i   i   d   z    b       m2   1.3
19   g   s   j   k   j   p   i    d       m2   0.4
20   z   e   i   s   r   k   y    a       m2   0.9

データフレームIDとMEASURED列がこのように連続している場合

mydata <- data.frame(id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,m1,m2)

その後、私は次のような範囲を使用して簡単な時間を過ごすでしょう

melt(mydata, id=1:10, measured = 11:12)

しかし、ID /測定列が隣接していない場合はどうすればよいですか?

ハドリーの論文/プレゼンテーションを含む、私が再形成に関して見たすべてのドキュメントでは、これを簡単に行う方法を見ていません。

私はここで非常に単純な何かを見逃していると確信しています...

4

2 に答える 2

1

さて、私はちょうど私のcをこのようにネストできることに気づきました

melt(mydata, id=c(c(1:7),9,10,12)

質問を複雑にしすぎて申し訳ありません:-\

編集:うわー。c(1:7,9,10,12)を試してみたところ、Rが文句を言った。でも今やってみたら大丈夫です。それはloooooooong日でした。

于 2011-09-17T09:50:09.637 に答える
0

列名のパターン、列のクラス、またはコードの前半に入力したリストなど、何かを条件付ける必要があります。Rは、どの列がどの列であるかを魔法のように理解することはできません。

于 2011-09-17T07:36:01.583 に答える