2017-07-15 13 views
-3

data.frametableに変換しようとしています。です。基本的に私はcookbookを参考にして、名前付きまたは名前のないベクトルのデータフレームから試しました。データセットはkaggleからのstackoverflow surveyです。table()関数がデータフレームを正しく変換しない

moreThan1000 <- subset(users, users$Number >1000) 
moreThan1000 <- moreThan1000[order(moreThan1000$Number),] 

enter image description here

は私が

よう tableに変換しようとすると、以下に示すよう

moreThan1000はそれらが1000以上のstackoverflowのユーザーを持っていると番号の列でソートdata.frame店舗の国であります

tbl <- table(moreThan1000) 
tbl <- table(moreThan1000$Country, moreThan1000$Number) 
tbl <- table(moreThan1000$Country, moreThan1000$Number, dnn = c("Country","Number")) 

各試行後、私の変換は次のようになります。 enter image description here

なぜmoreThan1000 data.frameなぜ関連する国だけでなく、すべての国をtableに送信しますか?私のコンバージョンはmatrixのようです。

+2

なぜテーブルオブジェクトに変換しますか?あなたはdata.frameにすでに表形式のデータが入っています。 – Roland

+0

は 'barplot'や' pie'では動作しないので、 –

+1

@ MuratSEKERMCT;私はそうしていません。 'barplot(dat $ number、names.arg = dat $ country)' – user20650

答えて

1

これは、国がお互いに関係していないためだと私は信じています。各国には数字が対応し、別の国には無関係の数字が対応します。したがって、これを反映する最善の方法は、元のdata.frameであり、2つの国が非常に同じ数のstackoverflowユーザーを持たない限り、1行につき1つだけの1を持つ表ではありません。使用しているデータセットをダウンロードしていませんが、偽のデータセットで何が起こるかは、moreThan1000のように番号順に調べてください。

dat <- data.frame(A = letters[1:5], X = 21:25) 
table(dat$A, dat$X) 

    21 22 23 24 25 
    a 1 0 0 0 0 
    b 0 1 0 0 0 
    c 0 0 1 0 0 
    d 0 0 0 1 0 
    e 0 0 0 0 1 

なぜあなたはあなたのデータセットと何か違うと思いますか?

0

機能 "テーブル"は、テーブルに使用されています。

したがって、は、すべての値がどのくらいの頻度で発生するかをカウントします。(「番号」列!)。あなたのケースでは、すべての番号は1回だけ発生するので、ここでこの機能を使用しないでください。それは正しく動作していますが、必要なものではありません。

あなたのデータはすでに集計されているため、再度頻度を数える必要はありません。

オブジェクト変換機能があるかどうかを確認することができます。tableではなく、as.tableの機能を探していると思います。

関連する問題