次のように定義された R のデータ フレームがあります。
データ フレーム:
col 1 col 2 col 3 col4
200 AIG 8.5 12
800 AIG 8.1 20.1
500 A1B 20 50.5
800 A1B 12 30
120 A2M 1.6 8.5
dat <- structure(list(col1 = c(200, 800, 500, 800, 120), col2 = structure(c(3L,
3L, 1L, 1L, 2L), .Label = c("A1B", "A2M", "AIG"), class = "factor"),
col3 = c(8.5, 8.1, 20, 12, 1.6), col4 = c(12, 20.1, 50.5,
30, 8.5)), .Names = c("col1", "col2", "col3", "col4"), row.names = c(NA,
-5L), class = "data.frame")
次に、行を id で折りたたみたいと思います (この場合、一意の id は A1G、A1B、A2M です)。
列 1、同じ ID の行を追加して折りたたみたいと思います。
列 2、それをそれぞれの一意の ID
に折りたたみたい 列 3、次のように折りたたんで、col1*col3 を取り、それらを加算してから、col1 の合計で割ります。
つまり、A1G の新しい行の値は (8.5*20+8.1*80)/(80+20) である必要があります。col1 の値で加重された列 3 の加重平均とも呼ばれます。
Col 4、最大値を取りたいのですが。
結果のデータ フレームは次のようになります。
column 1 column 2 column 3 column 4
800+200=1000 AIG (8.5*200+8.1*800)/1000=8.18 max(12,20.1)=20.1
800+500=1300 AIB (20*800+12*500)/1300=16.9 max(50.5, 30)=50.5
120 A2M 1.6 8.5
助言がありますか?