大きなデータセットをRにクラス分けする方法.

29704 ワード

グループデータの表を作成する方法


統計学者やアナリストとしての時間のほとんどは、大きなデータを扱うことになる
あなたのデータの便利なビューのグループ化が必要になる可能性があります.あなたのデータを想像して以下のように与えられた.


以下は従業員の給料を1ヶ月で示している.
88,82,96,102,104,106,104,24,26,29,86,36, 60, 23, 24,39,48, 46, 33, 36,39, 78,67,82, 32, 67, 27, 24,26,27, 30,36, 37,49, 50, 56,83, 99,68, 28, 55, 54, 26,29, 30,40, 46, 44, 99,84, 36,51, 86,88, 87,29, 40, 40, 40, 66, 45,23,26, 46,46, 96,99, 100,100, 101,103, 106, 107, 46,48, 49,48, 94,55, 56,59, 60, 70, 72,76, 79,80, 50,49, 93,86, 54,83, 89,90, 94, 96, 99,102,46
ご覧のように、このデータはとても大きく、それについて何も言うことは難しいです.
テーブルを必要とするデータを要約するには、ここでは、周波数テーブルを必要としていません.周波数テーブルは、データが小さい範囲であって、何度も自己を繰り返している場合には、それに適しているかもしれません.

大きな範囲とデータの要素がほとんど繰り返されないときに何をする必要がありますか?


あなたがする必要があるすべてのクラスにデータをグループにいくつかの間隔を作成することです.
それは常に最大5クラスではなく15クラスを遵守することをお勧めします.
また、各クラスは同じクラス幅を持つべきです.

クラス幅は?
クラス幅は、クラス内にある可能性のある要素/値の数だけです.
たとえば、クラスが範囲21 - 25と20 - 29を持っているならば、私たちはクラス幅が5と10であると言います.それは、各クラスにおいて考慮することができた要素が下にあるので起こります.
21 - 25 : 21 , 22 , 23 , 24 , 25 ( 5の数字)
20 - 29 : 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 ( 10番)
どんなクラスのクラス幅を速く得るトリックは何ですか?
私が使っていたトリックは、クラスの範囲を見つけるだけで、1を追加します.
クラス幅=範囲1
したがって、21 - 25 == range = 25 - 21 = 4の場合、クラス幅= 4 + 1 = 5.
今、上記のデータを見たらどうすればいいのでしょうか?まあ、これは非常に簡単でも、あなたのデータは、何百万としても、何百万もの数百万です.

クラスへの大きなデータセットをグループ化する方法


データセットをグループ化するには、クラスの開始位置と終了位置、クラス幅の大きさを知るために、データの最小値と最大値を知ることが重要です.
最小値と最大値を計算する方法.
ここで最小値と最大値を計算するにはmin()max()関数を使います.例えば、上記のデータの最大値と最小値を見つけましょう.そのために以下のコードを書きます.
data=c(88,82,96,102,104,106,104,24,26,29,86,36,60,23,24,39,48,46,33,36,39,78,67,82,32,67,27,24,26,27,30,36,37,49,50,56,83,99,68,28,55,54,26,29,30,40,46,44,99,84,36,51,86,88,87,29,40,40,40,66,45,23,26,46,46,96,99,100,100,101,103,106,107,46,48,49,48,94,55,56,59,60,70,72,76,79,80,50,49,93,86,54,83,89,90,94,96,99,102,46)
min(data)
max(data)
結果>
23
107
上のコードは最小値が23、最大値が107であることを示している.
今、このデータをグループ化するために、我々は21から始まることができます、そして、この範囲の間、110で終わります.もう一つの質問は「クラス幅として何を使うべきか」ということです.あなたがそれを自分で描くことができるもの.10または15を使用することを決定することができます.どれもOKですが、ここで15を使用します.
注意:データクラスの範囲がどれくらい大きいかによって、どのクラス幅を使用することができます.ちょうど5〜15クラスにグループを確認してください.
ここでのクラスは次のようになります.
21 - 35 , 36 - 50 , 51 - 6595‐110
クラス幅として10を選択すると、クラスは次のようになります
21 - 30 , 31 - 40 , 41 - 50 .101 - 110これはずっと簡単に思える.
私たちは行くことができますし、各クラスの観測の秋の数をカウントし、各クラスのそれぞれの周波数としてそれを書く.
どのように、私は私のデータセットをグループ化しますか?
私はあなたが既にデータを構築するための理論的方法を理解していると信じています.
コードを書く前に、Uは以下を知っていなければなりません

Rのグループ頻度表を構築するのに必要な重要な機能。


  • seq () :シーケンス数を形成するために使用されます.から、.すなわち、開始、終了、増分.

  • cut () :シーケンス内の各クラスの上限クラスを定義することにより、クラスに大きなデータセットを分割するために使用される関数.3つの重要な引数が必要ですデータ、ブレーク、ラベルを含める.最低.

  • table () :与えられたデータ集合をテーブル化したり、表形式で表現したりします.
  • では、上記の関数を使って問題を解決しましょう.
    コード>>
    myData=c(88,82,96,102,104,106,104,24,26,29,86,36,60,23,24,39,48,46,
      33,36,39,78,67,82,32,67,27,24,26,27,30,36,37,49,50,56,83,
      99,68,28,55,54,26,29,30,40,46,44,99,84,36,51,86,88,87,29,
      40,40,40,66,45,23,26,46,46,96,99,100,100,101,103,106,107,
      46,48,49,48,94,55,56,59,60,70,72,76,79,80,50,49,93,86,54,
      83,89,90,94,96,99,102,46)
    groupData=cut(myData,break=seq(20,110,15),include.lowerclass=FALSE)
    table(groupData)
    
    結果>
     (20,35]  (35,50]  (50,65]  (65,80]  (80,95] (95,110] 
        19       27       10       10       16       18 
    
    以上の結果はクラス幅と15のクラス幅を用いて各クラスと周波数を示した.

    どのように、コードは動きますか?
    私が通常強調する1つの特定のものは「コードがあなたのために働くコードを望むならば、コードがどのように働くかについて理解しています」.したがって、Cut ()関数のパラメータがどのように機能するかを説明します.
    最初のパラメータはデータセットです.これはどのようにクラスを壊したいかを示すために使用されます.クラスのクラスがどこから始まるのかを知っているので、クラスの区切りポイントを表示するにはseq ()関数を使うのが良いでしょう.
    3番目のパラメータをtrueまたはfalseに設定することはできますが、ここではfalseを使用します.なぜなら、最初のクラスに20を含めるつもりはないということです.
    上記の結果は、データの19が21と35の間に落ちるとあなたに話しています.以上の意味は、以下を意味する.
    I . E(21,35)は21以上のデータを意味し、21〜35と同じものである35以下である.
    それらのクラスを我々自身のより良い方法で書く方法がありますか?
    もちろんはい!あなたがブラケットを理解する必要がないように、より良い方法で各クラスを書くことができます.次のコードを見てみましょう
    
    myData=c(88,82,96,102,104,106,104,24,26,29,86,36,60,23,24,39,48,46,
      33,36,39,78,67,82,32,67,27,24,26,27,30,36,37,49,50,56,83,
      99,68,28,55,54,26,29,30,40,46,44,99,84,36,51,86,88,87,29,
      40,40,40,66,45,23,26,46,46,96,99,100,100,101,103,106,107,
      46,48,49,48,94,55,56,59,60,70,72,76,79,80,50,49,93,86,54,
      83,89,90,94,96,99,102,46)
    lowerclass=seq(21,110,15)
    upperclass=lowerclass+14
    classInterval=paste(lowerclass,'-',upperclass)
    groupData=cut(myData,breaks=seq(20,110,15),
    labels=classInterval,include.lowerclass=FALSE)
    table(groupData)
    
    結果>
    21 - 35 36 - 50 51 - 65 66 - 80 81 - 95 96 - 110
       19      27      10      10      16      18
    
    コードの仕組み
    seq ( 21110 , 15 )を実行しようとすると、クラスごとに下位クラスの制限を与えることがわかります.ここで対処したいのは、ブラケットを使う代わりに自然な方法で書く方法です.
    したがって、上位クラスを取得するにはクラス幅を追加する必要があることを知っていますが、1を減算しなければなりません.
    今我々は決定的に一緒に範囲を形成するために一致することができます.paste()は、そのタスクに対処するためにここで使用される関数です.そして、私が作成したクラス間隔に等しいように、cut()パラメータにラベルを追加します.そしてブーム!私たちはそれをした.
    これはかなり面白いです!しかし、あなたが私のような誰かであるならば、テーブルが2つのコラムテーブルであるならば、私はそれが好きです、そして、どのように、私はそれをしますか?非常に簡単に、単にデータを使用します.frame ()関数を実行します.次のコードを見てください.
    コード>
      myData=c(88,82,96,102,104,106,104,24,26,29,86,36,60,23,24,39,48,46,
      33,36,39,78,67,82,32,67,27,24,26,27,30,36,37,49,50,56,83,
      99,68,28,55,54,26,29,30,40,46,44,99,84,36,51,86,88,87,29,
      40,40,40,66,45,23,26,46,46,96,99,100,100,101,103,106,107,
      46,48,49,48,94,55,56,59,60,70,72,76,79,80,50,49,93,86,54,
      83,89,90,94,96,99,102,46)
    lowerclass=seq(21,110,15)
    upperclass=lowerclass+14
    classInterval=paste(lowerclass,'-',upperclass)
    wages=cut(myData,breaks=seq(20,110,15),
                        labels=classInterval,include.lowerclass=FALSE)
    groupTable=table(wages)
    data.frame(groupTable)
    
    結果>
        wages    Freq
    1   21 - 35   19
    2   36 - 50   27
    3   51 - 65   10
    4   66 - 80   10
    5   81 - 95   16
    6  96 - 110   18
    
    これは信じられないほど正しいですか?この記事をお楽しみください.もしそうならば、興味があるかもしれない他の誰かにそれを共有するのを忘れないでください.任意の質問や訂正がある場合は私にコメントを削除することができます.私についてくることを忘れないでください、あるいは、Facebookで、あなたは私について議論する何かを持っていなければなりません.ありがとう