問題
ほんの少しのタイピングを使用して、多くの列を持つデータフレームを溶かしたいと思います。
私が使用しているデータフレームには、多くの場合、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 /測定列が隣接していない場合はどうすればよいですか?
ハドリーの論文/プレゼンテーションを含む、私が再形成に関して見たすべてのドキュメントでは、これを簡単に行う方法を見ていません。
私はここで非常に単純な何かを見逃していると確信しています...