2016-03-29 6 views
-1

の要因の累積長さを数える私は、このデータベースがあります。R:data.frame

Time = c("2016-03-01","2016-03-02","2016-03-03","2016-03-02","2016-03-03","2016-03-02") 
match = c("a","b","c","a","b","c") 
names = c("julien","julien","julien", "mathieu","mathieu","simon") 
df = data.frame(Time, names, match) 
df = df[order(Time),] 
df 
     Time names match 
1 2016-03-01 julien  a 
2 2016-03-02 julien  b 
4 2016-03-02 mathieu  a 
6 2016-03-02 simon  c 
3 2016-03-03 julien  c 
5 2016-03-03 mathieu  b 

をそして私は新しいカラムとして、時間によって各プレイヤーで再生試合の累積数をしたいです。私はいつでも、各プレイヤーが何回試合をしたかを知りたい。そのように:

 Time names match nb.of.match.played 
1 2016-03-01 julien  a     1 
2 2016-03-02 julien  b     2 
4 2016-03-02 mathieu  a     1 
6 2016-03-02 simon  c     1 
3 2016-03-03 julien  c     3 
5 2016-03-03 mathieu  b     2 

これは簡単なことでしたが、私は毎回失敗した結果でうまくいっていました。 ご協力いただきありがとうございます!

+0

は、私はこれを試してみました....できる限り働いて、私たちは申し訳ありませんが、私が示す価値が有形リード(コードスニペットを)持っていない – IceFire

+0

それを見てとることができ、あなたのコードスニペットの一部を示しましたソリューション:http://stackoverflow.com/questions/22843286/r-cumulative-count-over-multiple-columns-by-factorしかし、私は目的が似ていたとは思わなかった。 –

答えて

0

私はトレンドcumsum using ddply

と私の問題を解決するためしかし、私はCUMSUMが要因の長さでは動作しませんので、私はCUMSUMが働くことができる上、「1」の列を持っていたと思います。

Time = c("2016-03-01","2016-03-02","2016-03-03","2016-03-02","2016-03-03","2016-03-02") 
match = c("a","b","c","a","b","c") 
names = c("julien","julien","julien", "mathieu","mathieu","simon") 
df = data.frame(Time, names, match) 
df = df[order(Time),] 
df$nb = 1 
df 
     Time names match nb 
1 2016-03-01 julien  a 1 
2 2016-03-02 julien  b 1 
4 2016-03-02 mathieu  a 1 
6 2016-03-02 simon  c 1 
3 2016-03-03 julien  c 1 
5 2016-03-03 mathieu  b 1 

within(df, { 
    nb.match <- ave(nb, names, FUN = cumsum) 
}) 
df 
     Time names match nb nb.match 
1 2016-03-01 julien  a 1  1 
2 2016-03-02 julien  b 1  2 
4 2016-03-02 mathieu  a 1  1 
6 2016-03-02 simon  c 1  1 
3 2016-03-03 julien  c 1  3 
5 2016-03-03 mathieu  b 1  2