2017-06-01 16 views
1

問題とデータ

私は以下のデータフレームを持っています。各time_frameに対して、対応する値は対角線内にある。Rのデータフレームの対角の値を抽出するには?

> dput(foo) 
structure(list(time_frame = c(20948, 23748, 24026, 24350, 24462 
), col1 = c(1, 1, 1, 1, 1), col2 = c(2, 2, 2, 2, 2), col3 = c(1, 
1, 1, 1, 1), col4 = c(3, 3, 3, 3, 3), col5 = c(1, 1, 1, 1, 1)), .Names = c("time_frame", 
"col1", "col2", "col3", "col4", "col5"), row.names = c(NA, -5L 
), class = "data.frame") 

enter image description here

必要な出力と私は私の必要な出力は以下の通りです

を試してみました:

foo2 <- data.frame(time_frame = c(20948, 23748, 24026, 24350, 24462), 
        turn_signal_state = c(1,2,1,3,1)) 

私が何かわからないここでは、このデータフレームを作成するためのコードですこの出力を得るには最良の方法です。だから、次のように私はtidyrパッケージを試してみました:

library(tidyr) 
foo %>% 
    gather(col, turn_signal_state, -time_frame) 

しかし、あなたが見るように、これは私が必要と正確に何ではありません。 foofoo2に変換する最良の方法を教えてください。私はtidyverseを使用することを好む。また、元のファイルは、read.delimを使って読み込んだテキストファイルです。最初にfoo2形式で読むことができるかどうかお知らせください。ありがとう。

答えて

3

この質問を閉じることができるような答えを提供するために、あなたは、単にあなたのデータフレームは、行列に変換することができ、その後、そのようdiag機能を使用しては:

diag(as.matrix(foo[, -1]))

あなたはただ無視する必要があり最初の列は結果ベクトルに含まれないようにします。

関連する問題