2016-01-18 7 views
11

私のデータフレームに複数の列の頻度を持つテーブルを作成するのが好きです。下のデータフレームの一部をコピーしています。dplyrを使用して頻度テーブルを作成する方法

テーブルには、色で「赤」、性別で「F」の頻度(nと%の両方)が想定されています。

私はdplyrパッケージがこれを行うことができると思いますが、私はそれを理解できません。あなたが個別に各変数を見たい場合は、あなたが最初のデータフレームを再配置する必要があります -

コメントあたり

 
    RespondentID Color  Gender 
1  1503   Red   F  
2  1653   NA   M 
3  1982   Red   F 
4  4862   Red   NA 
15 4880   Blue   M 

+1

何を試しましたか – rawr

+1

いくつの列ですか?あなたの場合、単純な 'table'または' prop.table'が行います。 –

+0

私は、2つの異なるデータセットに対してほぼ10の列を持っています。 私はこれらの2つのデータセットの傾向の違いを示すバープロットを作成するために、各変数(列)の数値(カウントと%)を取得したいと考えています。 – Rooz

答えて

16
library(dplyr) 

df %>% 
    count(Color, Gender) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [4 x 4] 
# Groups: Color [3] 
# 
# Color Gender  n  prop 
# (fctr) (fctr) (int)  (dbl) 
# 1 Blue  M  1 1.0000000 
# 2 Red  F  2 0.6666667 
# 3 Red  NA  1 0.3333333 
# 4  NA  M  1 1.0000000 

更新you-がありがとうございました。これを行うにはtidyr

library(tidyr) 
library(dplyr) 

gather(df, "var", "value", -RespondentID) %>% 
    count(var, value) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [6 x 4] 
# Groups: var [2] 
# 
#  var value  n prop 
# (fctr) (chr) (int) (dbl) 
# 1 Color Blue  1 0.2 
# 2 Color Red  3 0.6 
# 3 Color NA  1 0.2 
# 4 Gender  F  2 0.4 
# 5 Gender  M  2 0.4 
# 6 Gender NA  1 0.2 
+0

私は列の色の赤と女性の列の性別の頻度を別々に計算したいと思います。これらの列は独立変数です。私は2つの異なるデータセットに対してほぼ10列を持っています。私はこれらの2つのデータセットの傾向の違いを示す棒グラフを作成するために、各変数(列)の数値(カウントと%)を取得したいと考えています。 – Rooz

+0

@Roozさんがあなたのコメントごとに私の答えを更新しました。おそらく、特定の質問と結果を攻撃するより良い方法がある可能性があるため、最終的な試合であるプロットのより具体的な新しい質問を投稿する必要があります。さらに、提供されたサンプルデータが問題のデータを正確に表現していないように思われます。おそらく、データセットの固有の課題を最もよく示す再現可能なサンプルやサンプルデータセットを作成しようとしてください。 – JasonAizkalns

+0

私が投稿する今後の質問については、あなたの提案に従います。手伝ってくれてどうもありがとう。 – Rooz

関連する問題