2016-05-17 1 views
-1
に送信

私は電話のデータセット(CSV)を持っています。これにはいくつかの列が含まれていますが、重要な列は「担当者」と「担当者」です。データはすべて文字列(名前)です。行われたすべての作業は、これらの列の2つの列データにあります。例のように:複数の小計とgroup_byを表形式でR

希望の出力は、人とその人の呼び出し回数の形式です。たとえば、上記の出力は次のようになります。

Caller Receiver CallFreq 
Alice Mary  1 
     Betty  1 
Kate Betty  1 
Mary Kate  1 
     Jane  1 
Jane Alice  1 

人が行った総コールは、上記の表または別の表に含めることができます。

+1

入力の形式は何ですか?まず、データを読みやすくする必要があります。 – zyurnaidi

+0

私はいくつかの詳細をQに追加しました。単純に複数の列を持つCSVです。しかし、私の仕事は2列の名前/文字列(発信者、受信者)に限定されています。これらの名前をグループ化して頻度を数えて、表示されているのと同様の出力に到達しようとしています。ありがとうございました。 – Brijesh

+0

ありがとう@MrFlick !!! – Brijesh

答えて

0

この場合、tidyrパッケージの不必要な機能は非常に便利です。

output <- 
    mydata %>% 
    group_by(Caller) %>% 
    summarise(Receiver = paste(unique(Receiver), collapse=' | ')) %>% 
    mutate(Receiver = strsplit(Receiver, ' \\| ')) %>% 
    unnest(Receiver) %>% 
    group_by(Caller) %>% 
    mutate(CallFreq = 1, TotalCalls = n_distinct(Receiver)) 

上記のコードを直接実行するには、パッケージdplyr、magrittr、およびtidyrを使用する必要があります。

+0

ありがとうございます。私はコードを試した。それは私にエラー "エラー:列 'Call3'(NILSXP、クラス= NULL)のサポートされていない型"どのようにこれらの問題を解決するためのアイデア、両方の列は文字列ですか? – Brijesh

+0

hmm元データを定義した方法は、 mydata < - data.frame(Caller = c( 'Alice'、 'Kate'、 'Alice'、 'Mary'、 'Jane')、Receiver = c( 'Mary' 、 'Betty'、 'Betty'、 'Kate | Jane'、 'Alice')) あなたが受け取ったエラーはdplyrバグです:http://stackoverflow.com/questions/34054968/mutate-is-グローバル変数の使用時に値を抽出しようとしています 提案されている一時的な修正は$ yの代わりに$ 'y'を使用していますので、問題のある列それが適用される場合?あなたが使用している 'Call3'列は何ですか?それ以外の場合は、列を因子に変換してみることもできます。 – coyin

+0

@coyinありがとう、私は昨日それを試みた。それは私のために働かなかった。 – Brijesh

関連する問題