0

cl_tabulateサンプルの KDD Cup 2009 データの統計を取得するために使用しています。df.trainbaseこれは、私が使用しているデータのサンプル部分です...

    > sample <- df.trainbase[4100:4110,220:223]
    > sample
      Var220  Var221  Var222     Var223
      4100 qcEoI0_    oslk fXLavGi LM8l689qOp
      4101 OTg4K41    oslk N9WHLT9 LM8l689qOp
      4102 54petck    oslk eEfa_vf LM8l689qOp
      4103 m_dAM23    oslk nFzwuDg LM8l689qOp
      4104 ROeipLp    zCkv K2SqEo9 LM8l689qOp
      4105 4UxGlow    oslk catzS2D LM8l689qOp
      4106 rDm6pd1    oslk Q53Rkup LM8l689qOp
      4107 XqwYlW4    oslk sMvE4Qn LM8l689qOp
      4108 EncOVQC    oslk 8AGQQMs LM8l689qOp
      4109 b0v7gqP d0EEeJi 80xXg6w LM8l689qOp
      4110 3aBfc8E    oslk aXcOEra LM8l689qOp

    > tabs <- llply(sample,cl_tabulate)

タブのリストは次のようになります (2 つのリスト要素が示されています)。

    > tabs
      $Var220
       values counts
    1  qcEoI0_      1
    2  OTg4K41      1
    3  54petck      1
    4  m_dAM23      1
    5  ROeipLp      1
    6  4UxGlow      1
    7  rDm6pd1      1
    8  XqwYlW4      1
    9  EncOVQC      1
    10 b0v7gqP      1
    11 3aBfc8E      1

    $Var221
     values counts
    1    oslk      9
    2    zCkv      1
    3 d0EEeJi      1

次のように、指定されたリスト要素 (つまり、データ列) の最も一般的なレベル値の数を取得できます。

    > max(tabs[[1]]$counts)

      [1] 37216

しかし、どのようにmax(tabs[[i]]$counts)してすべてを取得するのですかi(たとえば、llply()可能であれば使用する)? その最も一般的なレベルの値と、各列で発生する回数が必要です。

理想的には、最終結果は、変数名、最も一般的な因子の値、および出現回数を含む、変数ごとの単純な行です。たとえば、Var196 の場合は次のようになります。

    Var196   1K8T    49550

ネストされたリスト (上記の「タブ」など) を渡して、llply()構造の列レベルの「下」にある要素を指すことは可能ですか? 見えません。

...そして解決策(以下)は使用することですmelt()

    > m = melt(tabs, id="values")
    > m <- m[-2]
    > m

    values value     L1
    1     qcEoI0_     1 Var220
    2     OTg4K41     1 Var220
    3     54petck     1 Var220
    4     m_dAM23     1 Var220
    5     ROeipLp     1 Var220
    6     4UxGlow     1 Var220
    7     rDm6pd1     1 Var220
    8     XqwYlW4     1 Var220
    9     EncOVQC     1 Var220
    10    b0v7gqP     1 Var220
    11    3aBfc8E     1 Var220
    12       oslk     9 Var221
    13       zCkv     1 Var221
    ...

これはまさに私が必要としていたものです。

4

0 に答える 0