2011-10-24 26 views
3

私はdata_format1という形式のデータを持っています。これに基づいて、データ型を取得するために変数を変数に変換したいと考えています。ケースを変数に変換するR

あなたがここにdata_format1見つけることができます:data_format2がここに与えられている

ArticleID<-c(1, 2, 3, 3, 4) 
Word<-c("a", "b", "b", "c", "c") 
Freq<-c(2, 4, 6, 3, 2) 
data_format1<-cbind(ArticleID, Word, Freq) 

data_format1 

    ArticleID Word Freq 
[1,] "1"  "a" "2" 
[2,] "2"  "b" "4" 
[3,] "3"  "b" "6" 
[4,] "3"  "c" "3" 
[5,] "4"  "c" "2" 

ArticleID_t<-c(1, 2, 3, 4) 
a<-c(2, 0, 0, 0) 
b<-c(0, 4, 6, 0) 
c<-c(0, 0, 3, 2) 
data_format2<-cbind(ArticleID_t, a, b, c) 
data_format2 

    ArticleID_t a b c 
[1,]   1 2 0 0 
[2,]   2 0 4 0 
[3,]   3 0 6 3 
[4,]   4 0 0 2 

答えて

4

これは、古典的な再形成の問題である - ワイドフォーマットに背の高い形式からデータを変換します。パッケージはreshape2が理想的です。

注:最初にデータをdata.frameに変換する必要があります。 cbinddata.frameではなく、データを取得して配列を作成することを覚えておいてください。そこで、私はdata.frame(...)を使ってデータを再作成します。

library(reshape2) 
data_format1 <- data.frame(ArticleID, Word, Freq) 
reshape2::dcast(data_format1, ArticleID~Word, sum) 

    ArticleID a b c 
1   1 2 0 0 
2   2 0 4 0 
3   3 0 6 3 
4   4 0 0 2 

詳細については、?reshape2::dcastを参照してください。

+1

ありがとうAndrieに行く。ただちに、私はあなたの答えをテストし、それはかなり良い動作します。 –