2017-09-19 19 views
-2

に古い日付の行を削除します。私はテーブルを持っているR

Date | Column1 | Column2 
------+---------+-------- 
6/1/1 | A  | 3 
5/1/1 | B  | 4 
4/1/1 | C  | 5 
1/1/1 | A  | 1 
7/1/1 | B  | 2 
1/1/1 | C  | 3 

私はテーブルが必要になります。

Date | Column1 | Column2 
------+---------+-------- 
6/1/1 | A  | 3 
4/1/1 | C  | 5 
7/1/1 | B  | 2 

二つの基準(Column1Column2)に基づいて、古い行を削除する方法は?日付によって

+1

にチェーンをdplyr簡素化することができます基準? –

答えて

0

グループ、グループ内で降順にアレンジし、あなたの日付形式が少しおかしいですので、あなたのエラーが発生している。この

library(dplyr) 
ans <- df %>% 
     group_by(Column1, Column2) %>% 
     arrange(desc(as.Date(Date))) %>% # will sort within group now 
     slice(1) %>%    # keep first row entry of each group 
     ungroup() 

のように、sliceで最初の行を保ちます。私は基本R日時ファンクションよりも堅牢であるlubridate::parse_date_timeを使用することをお勧めします@countによって役に立つコメントに基づいて

library(lubridate) 
library(dplyr) 
ans <- df %>% 
     group_by(Column1, Column2) %>% 
     arrange(desc(parse_date_time(Date, format="mdy"))) %>% # will sort within group now 
                    # the date format is specified as month-day-year 
     slice(1) %>%    # keep first row entry of each group 
     ungroup() 

EDIT

は、我々は何

library(lubridate) 
library(dplyr) 
ans <- df %>% 
     group_by(Column1, Column2) %>% 
     slice(which.max(parse_date_time(Date, format="mdy"))) %>%    # keep max-Date row entry of each group 
     ungroup() 
+1

Group_byはColumn1に基づいています '' 'group_by(Column1)' '' – amrrs

+0

ああありがとう!私の間違い。 – CPak

+0

mutate_impl(.data、dots)のエラー: 文字列が標準的な一意のフォーマットではありません –

関連する問題