27365


[パネルデータにおけるIDごとの抽出](https://ja.stackoverflow.com/questions/27140/%E3%83%91%E3%83%8D%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bid%E3%81%94%E3%81%A8%E3%81%AE%E6%8A%BD%E5%87%BA/27359#27359)  
の続きです。  
同じIDの最新データのみを抽出したいです。  
具体的には

[code]

    ID,PANEL,Q1,Q3,Q6,Q8,Q11,Q13,Q16,Q18,Q33,Q34,Q128,Q137,Q299
    50,9,1,39,NA,13,NA,NA,NA,NA,5,0,90,90,0
    50,10,1,40,2,14,3,13,8,69,7,0,84,84,0
    50,11,1,16,2,15,3,12,8,68,9,0,100,100,0
    51,7,1,38,2,13,3,12,NA,NA,4,3,0,0,0
    51,8,1,39,2,14,3,13,NA,NA,7,0,36,36,0
    51,9,1,40,2,15,NA,NA,NA,NA,6,0,59,59,0
    51,10,1,41,2,16,3,15,NA,NA,7,0,86,86,0
    51,11,1,42,2,17,3,16,NA,NA,6,0,80,80,0
    52,7,1,40,2,13,3,7,NA,NA,0,0,0,0,0
    52,8,1,41,2,14,3,8,NA,NA,0,0,0,0,0
    53,7,1,34,2,5,3,5,8,59,0,0,0,0,0
    53,8,1,35,2,6,3,6,8,60,4,0,0,0,0
    
[/code]

を

[code]

    ID,PANEL,Q1,Q3,Q6,Q8,Q11,Q13,Q16,Q18,Q33,Q34,Q128,Q137,Q299
    50,11,1,16,2,15,3,12,8,68,9,0,100,100,0
    51,11,1,42,2,17,3,16,NA,NA,6,0,80,80,0
    52,8,1,41,2,14,3,8,NA,NA,0,0,0,0,0
    53,8,1,35,2,6,3,6,8,60,4,0,0,0,0
    
[/code]

としたいと考えています。(最新のデータのみを抽出）  
PANELのところが第何回調査ということです。  
行の抽出なのでdplyrのfilterを使いたいですがID内でのPANELの最大値の抽出の仕方がわからないです。

<https://stackoverflow.com/questions/24237399/how-to-select-the-rows-with-
maximum-values-in-each-group-with-dplyr>  
を参考に data %>% group_by(ID) %>% filter(PANEL=max(PANEL))  
とやってもうまくいかないです。  
エラーメッセージはError: filter condition does not evaluate to a logical vector. です。  
よろしくお願い致します。


CC BY-SA 3.0
2016-07-05T12:04:10.853
27361
2018-06-07T16:27:18.197
2018-06-07T16:27:18.197
12457
12457
question
r tidyverse dplyr
パネルデータの同一IDの標本の絞り込み


一度、欲しい形のIDとPANELのセットだけを含むテーブルを作成し、  
それに結合してはどうでしょうか？

[code]

    master <- data %>% group_by(ID) %>% dplyr::summarise(PANEL = max(PANEL))
    dplyr::left_join(master, data, by = c("ID", "PANEL"))
    
[/code]


CC BY-SA 3.0
2016-07-05T16:56:31.833
27365
2016-07-05T17:34:59.503
2016-07-05T17:34:59.503
3068
17070
27361
answer