2016-07-11 5 views
0

にデータテーブルから関連データを作成します。は、私はこのようになり、データテーブル内のデータを持っているR

Category Country 
A   India 
B   Canada 
C   Ireland 
A   Ireland 
C   Canada 
A   India 
A   Canada 

私は国が同じ2つのカテゴリを生成する場合があるというように、それを変換したいです国名と2つのカテゴリの名前を含む結果のデータテーブルの行。現在、私は長い形式に変換するには、マトリックスと計画に変換しています

Value 1 Value 2 Country 
A   A  India 
B   C  Canada 
B   A  Canada 
C   A  Canada 
C   A  Ireland 

::だから、上記の出力は次のようになります

M=(as.matrix(table(df))) 

しかし、それはちょうど私に与えます各カテゴリ1、カテゴリ2、国の値を別々の行にする代わりに、カテゴリ1、カテゴリ2、Countof(国)の値を取得します。

私はdata.tableを新しくしており、その速度に感心しています。私は特に効率的なdata.tableの方法があるかどうかを知ることに興味があります。

答えて

2

あなたはそれがの仕組み

DF[, 
    CJ(Category, Category, unique=TRUE)[if (.N == 1L) TRUE else V1 > V2][order(-V1, -V2)] 
, by=Country] 

    Country V1 V2 
1: India A A 
2: Canada C B 
3: Canada C A 
4: Canada B A 
5: Ireland C A 

を行うことができます。

  • CJ(Category, Category, unique=TRUE)
  • CJ(Category, Category, unique=TRUE)[if (.N == 1L) TRUE else V1 > V2]
  • CJ(Category, Category, unique=TRUE)[if (.N == 1L) TRUE else V1 > V2][order(-V1, -V2)]
:ように、第2引数で、段階的にそれを実行してみてください

と、?CJとを読んでください。

コメント。一般的に、ここで求めているのは、結果をブラウズするだけでない限り、Rとdata.tableの悪い考えです。さらに分析する必要がある場合は、幅広ではなく長形式でデータを扱う方がはるかに便利です。

関連する問題