2017-04-03 11 views
0

私は日付での出現をカウントしたい2つの変数を持つカラムを持っています。dplyrの2つのtable()関数に相当します

> testData 
    plan_type  date 
1 subscriber 2016-09-06 
2 subscriber 2017-01-19 
3 subscriber 2016-10-07 
4  PPU 2017-01-19 
5  PPU 2015-06-17 
6  PPU 2015-07-03 

私は、この2つの異なるデータフレームにサブセット化によって、たとえば行うことができることを知っている - table()を使用し、2つのデータフレームを結合し、その後、唯一subscriberで唯一PPUデータと1。しかし、私はdplyrでより効率的な解決法を見つけたいと思います。これは1つのコマンドでこれを行うことができます。

出力は、次のようになります。NAの値は、変数のいずれかのデータがない場合です。

> output 
     date subscriber PPU 
1 2015-06-17  <NA> 1 
2 2015-07-03  <NA> 1 
3 2016-09-06   1 <NA> 
4 2016-10-07   1 <NA> 
5 2017-01-19   1 1 

dplyrでこの機能を実行することになり、特定の式はありますか?新しいcostant列n、その後spread()作成することができますdplyr

+1

'reshape2を使用することができます。 :dcast(testDa ta、日付〜計画タイプ、長さ) ' http://stackoverflow.com/questions/34417973/easy-way-to-convert-long-to-wide-format-with-counts/34418124も参照してください。 –

答えて

1

library(dplyr) 
library(tidyr) 

df %>% 
    mutate(n = 1) %>% 
    spread(plan_type, n) 

#>   date PPU subscriber 
#> 1 2015-06-17 1   NA 
#> 2 2015-07-03 1   NA 
#> 3 2016-09-06 NA   1 
#> 4 2016-10-07 NA   1 
#> 5 2017-01-19 1   1 

をデータ:

df <- read.table(text = ' plan_type  date 
       1 subscriber 2016-09-06 
       2 subscriber 2017-01-19 
       3 subscriber 2016-10-07 
       4  PPU 2017-01-19 
       5  PPU 2015-06-17 
       6  PPU 2015-07-03', header = T) 
0

data.tableで、私たちはdcast

library(data.table) 
dcast(setDT(df), date~plan_type, length) 
#   date PPU subscriber 
#1: 2015-06-17 1   0 
#2: 2015-07-03 1   0 
#3: 2016-09-06 0   1 
#4: 2016-10-07 0   1 
#5: 2017-01-19 1   1 
関連する問題