2017-04-06 10 views
2

私は私のデータフレームはこれに似ているR.に計算フィールドでピボットテーブルを作成しようとしている:計算フィールドでRのピボットテーブルを実行するにはどうすればよいですか?

number hour tot  cefe sell 
     1 09:00 50   2  1 
     1 10:00 52  NA NA 
     1 11:00 72   4  1 
     1 12:00 96   3 NA 
     1 13:00 90   4  1 
     1 14:00 98   2  1 
     2 08:00 38   4  1 
     2 09:00 427  16  2 
     2 10:00 493  16  1 
     2 11:00 340  16 NA 
     2 12:00 571  20  2 
     2 13:00 547  23  2 
     2 14:00 578  25  4 

私は時間」、行として「数」の変数を使用して、ピボットテーブルを構築する必要があります"を列とし、" cefe/tot "を値として返します。私は別の列を追加したり、これを行うために別のデータフレームを生成したりしたくないですが、それを行う方法はわかりません。私はキャスト関数を試してみましたが、値として変数を "売る"としか考えません。何か案が?

答えて

2

dplyrtidyrでこれを行うことができますが、このスクリプトは変換の一部として技術的に新しい列を作成します。

library(dplyr) 
library(tidyr) 

x %>% 
    mutate(cefetot = cefe/tot) %>% 
    select(number, hour, cefetot) %>% 
    spread(key = hour, value = cefetot) 
+1

または同様に、 'X%>%GROUP_BY(数、時間)%>%のsummarize(cefetot =のcefE/TOT)%>%スプレッド(時間、CT)' –

+1

あなたの最初の答えはうまく機能し、あなたのおかげで助けて! –

関連する問題