2

IDが同一であるが日付が最も古い特定の行を削除する方法が見つかりません。この例では、ID は行 2 と同じですが日付が古いため、行 1 を削除します。

簡単な例:

id=c(1,1,2)
date=c("2012-01-01", "2014-01-01", "2014-04-06")
df <- data.frame(id, date)

ありがとうジェニー

4

2 に答える 2

3

dplyrソリューションは次のとおりです。

> library(dplyr)
> df %>% group_by(id) %>% arrange(desc(date)) %>% slice(1)
Source: local data frame [2 x 2]
Groups: id

  id       date
1  1 2014-01-01
2  2 2014-04-06

EDIT:以下のコメントで@David Arenburgによってよりシンプルな(そしてより効率的な)アプローチが提案されています:

> df %>% arrange(id, desc(date)) %>% distinct(id)

どちらのソリューションも、実際には最も古いエントリを削除せず、代わりに最新のものを選択することに注意してください。

于 2015-02-16T11:39:03.423 に答える