2017-10-09 5 views
1

私は、人々が当社のマーケティングコンテンツに関わることで得た道筋を描こうとしています。パスの頻度に基づいて線の色を調整します

は、私が(リンクはなど、クリックされた)すべてのマーケティング契約上のデータを持っている、彼らのマーケティングチャネル '、そしてその「係合位置」

係合位置、以下のとおりです。最初のタッチ[彼らはこれまでと係合初めて[機会が作られる直前に起こったエンゲージメント]、および[署名して購入する直前に起こったエンゲージメント]

実際にパスをマッピングするのに成功しましたが、問題は14チャンネルと100k +個々のパスであり、結果のグラフは非常に判読不能です。

このため、私は、パス全体の出現の頻度に基づいて線の色をスケールしたいと思います。 (

______________________________ 
| id | channel | position | 
| 1 | direct | FT  | 
| 1 | SEM  | LC  | 
| 1 | email  | OC  | 
| 1 | video  | CW  | 
| 2 | SEM  | FT  | 
| 2 | Video  | LC  | 
| 2 | Event  | OC  | 
| 2 | Email  | CW  | 
______________________________ 

私はグラフにしたいY軸が位置することが、X軸チャネルである、および各個々のパスの色をスケール:

これは私はデータが持っているフォーマットでありますIDによって識別される)は、経路全体の頻度に依存する。だから私はそれが私にそれが最も一般的なフルパスを示すことを望むLCに最も一般的なFT、次に最も一般的なLCからOCなどを私に見せたい。私がする必要があるすべては数字であるので、今

ggplot(tblp, aes(x=position, y=channel, group=id)) + 
geom_line(alpha=.01, size=.5) 

map picture

この

このコードを使用して作成された:ここ

はデータが私の現在のコードでどのように見えるかの例ですパス全体の頻度に基づいて色のスケールを変更する方法。これには、データフレームの別の設定が必要ですか?

ご了承ください。

答えて

2

現在、データはパス上の各ポイントが行になるように構造化されています。パスの頻度を測定するには、パス全体が1行になるようにデータを整形してから、集計したデータを現在のデータフォーマットのidに戻す必要があります。これは、tidyr::spreadといくつかのdplyr操作でかなり簡単になりました。


library(tidyverse) 

tb <- tribble(~id, ~channel, ~position 
       , 1, "direct", "FT" 
       , 1, "SEM", "LC" 
       , 1, "email", "OC" 
       , 1, "video", "CW" 
       , 2, "SEM", "FT" 
       , 2, "Video", "LC" 
       , 2, "Event", "OC" 
       , 2, "Email", "CW" 
       , 3, "SEM", "FT" 
       , 3, "Video", "LC" 
       , 3, "Event", "OC" 
       , 3, "Email", "CW") 

spread_tb <- tb %>% spread(position, channel) 

spread_tb 
#> # A tibble: 3 x 5 
#>  id CW  FT LC OC 
#> * <dbl> <chr> <chr> <chr> <chr> 
#> 1  1 video direct SEM email 
#> 2  2 Email SEM Video Event 
#> 3  3 Email SEM Video Event 

to_plot <- 
    spread_tb %>% 
    group_by(FT, CW, LC, OC) %>% 
    summarise(n = n()) %>% 
    ungroup() %>% 
    right_join(spread_tb, by = c("FT", "CW", "LC", "OC")) %>% 
    select(n, id) %>% 
    right_join(tb, by = 'id') 

to_plot 
#> # A tibble: 12 x 4 
#>  n id channel position 
#> <int> <dbl> <chr> <chr> 
#> 1  1  1 direct  FT 
#> 2  1  1  SEM  LC 
#> 3  1  1 email  OC 
#> 4  1  1 video  CW 
#> 5  2  2  SEM  FT 
#> 6  2  2 Video  LC 
#> 7  2  2 Event  OC 
#> 8  2  2 Email  CW 
#> 9  2  3  SEM  FT 
#> 10  2  3 Video  LC 
#> 11  2  3 Event  OC 
#> 12  2  3 Email  CW 

ggplot(to_plot, aes(x=position, y=channel, group=id, color = n)) + 
    geom_line() 

+0

伝説の!私はこれをショットして報告します - それは私が必要とするものでなければならないように見えます! –

+0

には、周波数の不透明度を変える方法もありますか? –

+0

あなたの美的マッピングにアルファを追加してください。上のコードから 'aes(...、alpha = n)' – zlipp

関連する問題