2016-09-02 2 views
0

これは基本的な質問または繰り返しの質問の場合は申し訳ありません。しかし、私は時間を探していました。Rデータフレーム - 複数の列を行単位で1つの数値ベクトルに縮約する

データフレーム(たとえば100)内に複数の数値列を取り込み、それらを1つの列に格納できる単一の数値ベクトルに結合したいとします。私はdplyr :: transmute()関数を使用して結果を保存し、元の100列を削除する予定です。しかし、それは問題ではありません。私の問題は、データフレーム内の各行に対して繰り返し処理を実行することです。

as.numeric(mtcars[x,2:8]) 

は(VS)〜8私の行X、列2(CYL)の単一数値ベクトルを与えるだろう、私は、その後に格納することができ:簡単に言えば、私はmtcarsのデータフレームで働いていたと想像新しい列。しかし、どのように私は32行を1行に1度ずつ入力しなくても、データフレームの32行すべてにこれを適用できますか?

(はい、私は「適用」機能を試してみましたが、私はまだRを学んでいますので、正しい構文を見極めることができなかったかもしれない)

(また、私は私はそれを行うこととしforループですが、これらは一般的にRで目立たないことが集まっています)

助けてくれれば幸いです!

+0

あなたが試したことを投稿できますか? – Christoph

+0

あなたが正しく理解しているかどうかわからないが、行を列に変換すると、転置したいように聞こえます... 't(mtcars [、2:8])'はあなたに望ましい結果をもたらしますか? – cryo111

答えて

0

私は長い形式に自分のデータを変換しようとしているdavo1979とは思わないので、私は彼が望んでいるツールである集まるtidyr ::とは思わない、:ここではドキュメントからの例です。最もclosestly彼の質問に対処

私が思う答えは、このリストに含まれる数値ベクトル、各列を格納します

lapply(1:nrow(mtcars), function(x) as.numeric(mtcars[x,2:8])) 

です。

しかし、davo1979は、このデータの最終目標を知ることが重要です。数値ベクトルのあなたの望む結果が、Rでデータを処理して保存するための不器用な方法なので、私は尋ねます

+0

あなたのコードはそれを釘付けにしました(ありがとうございました。私はこれが「整然とした」データではないことを理解しています。私はより大きなデータセットと結合している18のファイルを持っています。 18個のファイルでは、各行は128要素のベクトルですが、ベクトルの各要素は独自の列です。組み合わせたデータセットでは、各要素をそれ自体の列として保持することは望ましくありません。これは、他の多くの列に加えて、18 * 128 = 2304の列が、計画された分析に大きな関心を持つためです。代替案は歓迎ですが、これは私が今必要とするよりコンパクトなフォーマットを実現し、大きなチャレンジ/練習です! – davo1979

+0

さらに明確にするために、18個のファイルの各行(ベクトル)は、結合すべき大きなデータセットの特定の行と一致します。 – davo1979

0

tidyrのgather()機能を試しましたか?

library(tidyr) 

stocks <- data_frame(
    time = as.Date('2009-01-01') + 0:9, 
    X = rnorm(10, 0, 1), 
    Y = rnorm(10, 0, 2), 
    Z = rnorm(10, 0, 4) 
) 

gather(stocks, stock, price, -time) 
stocks %>% gather(stock, price, -time) 
関連する問題