2016-08-14 7 views
0

私は以下に似たデータフレーム、列レベルの値をRの1行に変換するにはどうすればよいですか?

Name | ID    | SET | COUNT | 
------ | ------   |------ | ------ | 
Value | 44000001005 | 0  | 24  | 
Value | 10000000019659 | 0  | 29  | 
Value | 10000000019659 | 1  | 5  | 

私のようなものである必要がある結果、

Name | ID    | 0 | 1  | 
------ | ------   |------ | ------ | 
Value | 44000001005 | 24 | 0  | 
Value | 10000000019659 | 29 | 5  | 

はこれが行うことができますを持っているか、私は再び仕事をするために、データが設定されていますか? 私はRには比較的新しいので、いくつかの非常に明白なロジックを見逃しているかもしれませんが、誰かが私を導くことができれば感謝しています。 ありがとうございます。

+0

助けが必要な場合は、それよりもはるかに具体的でなければならないでしょう。私は現在書かれているように、その質問を理解していません。 – smacdonald

+0

@smacdonald申し訳ありません。私はフォーマットを編集しました。それがより良いことを望みます。 – RBK

答えて

1

フォーマットを長いフォーマットから広いフォーマットに変更する場合は、tidyrパッケージのspread関数を使用できます。他のパッケージや可能性もありますが、これは私の好みです。

Rを使い慣れていない場合は、最初にinstall.packages( "tidyr")でパッケージをインストールする必要があることに注意してください。

Name <- c("Value","Value","Value") 
ID <- c(6546465445,5464564,5464564) 
SET <- c(0,0,1) 
COUNT <- c(24,29,5) 

df <- cbind.data.frame(Name,ID,SET,COUNT,stringsAsFactors=FALSE) 

library(tidyr) 

spread(data=df,key=SET,value = COUNT,fill=0) -> df_wide 

機能の詳細については、文書「spread」を参照してください。

+1

これは完璧に動作します。どうもありがとうございます。ドキュメンテーションは、私が関数のより明確な図を得るのを助けました。 – RBK

関連する問題