2012-03-05 13 views
0

私は観測値がIDyearevent_typeevent_dateのデータセットを持っています。 IDyearごとにアンバランスな観測数があります。具体的には、紛争時代の戦闘結果である。各戦闘には日付とタイプ(結果)があります。不平衡型データセットの変数作成

私がしたいことは、サブセット内の特定のタイプのイベントの数に基づいて変数を作成することです。IDyearです。だから、私は別の持っているので)event_type == x

year

和でID

によって

私はループのための定期的にこれを行う方法を理解するが、私はtapplyを(使用する必要があります理解してIDあたりの観測数?

答えて

2

aggregate(event_type ~ ID + year, subset(df,event_type=="x"), length) 
+0

私はこれが好き溶液。同じようにエレガントな方法で、IDと年の一致するOBにx型のイベントの数の合計を追加しますか?私はちょうどマージコマンドを実行するつもりです。 – Zach

+0

データが不均衡であるとすれば、マージは最も簡単な方法です(IMHO)。 – Andrei

2
library(plyr) 
df <-data.frame(ID=sample(11:20,25,replace=T),year=sample(1900:1905,25,replace=T),event_type=sample(c("win","lose"),25,replace=T)) 

# To see this sample data sorted by ID and year. 
arrange(df,ID,year) 
    ID year event_type 
1 11 1901  win 
2 11 1904  win 
3 11 1910  lose 
4 12 1920  lose 
5 13 1900  win 
6 13 1905  win 
7 13 1906  lose 
8 13 1912  win 
9 13 1920  lose 
10 14 1906  win 
11 14 1918  lose 
12 14 1920  win 
13 15 1909  win 
14 15 1919  win 
15 16 1916  win 
16 16 1920  lose 
17 18 1901  lose 
18 18 1910  lose 
19 18 1912  lose 
20 18 1920  win 
21 19 1916  win 
22 19 1916  win 
23 19 1917  lose 
24 20 1901  lose 
25 20 1914  lose 



    result <- ddply(df, .(ID,year,event_type),summarise, event_count=length(event_type)) 

    >result 
    ID year event_type event_count 
1 11 1903  win   1 
2 11 1905  lose   1 
3 12 1903  lose   1 
4 12 1905  win   1 
5 13 1902  win   1 
6 13 1905  lose   1 
7 14 1903  win   1 
8 15 1901  win   2 
9 15 1903  lose   1 
10 15 1905  win   1 
11 16 1904  win   1 
12 17 1904  lose   1 
13 18 1900  lose   2 
14 18 1900  win   1 
15 18 1902  lose   1 
16 18 1904  win   1 
17 18 1905  win   1 
18 19 1901  lose   1 
19 19 1902  win   1 
20 19 1903  lose   1 
21 19 1903  win   1 
22 20 1901  win   1 
23 20 1904  win   1 

のようなもの、次に、あなただけの勝利ではなく損失を集計したいとしましょう:私はその後、正しく質問を理解していれば

result <- ddply(subset(df,event_type=="win"), .(ID,year,event_type),summarise, event_count=length(event_type)) 

>result 
    ID year event_type event_count 
1 11 1903  win   1 
2 12 1905  win   1 
3 13 1902  win   1 
4 14 1903  win   1 
5 15 1901  win   2 
6 15 1905  win   1 
7 16 1904  win   1 
8 18 1900  win   1 
9 18 1904  win   1 
10 18 1905  win   1 
11 19 1902  win   1 
12 19 1903  win   1 
13 20 1901  win   1 
14 20 1904  win   1 
関連する問題