Ich möchte die letzte Zeile in einem Datenrahmen für jede Gruppe in R basierend auf max (start_date) löschen.R letzte Zeile im Datenrahmen für jede Gruppe löschen
Beispieldaten:
id start_date end_date
1 2016-01-14 2016-02-14
1 2016-03-14 2016-08-05
2 2014-01-14 2014-02-14
2 2015-03-21 2015-05-21
2 2015-08-23 2015-09-23
2 2015-11-21 2016-01-03
Ergebnis:
id start_date end_date
1 2016-01-14 2016-02-14
2 2014-01-14 2014-02-14
2 2015-03-21 2015-05-21
2 2015-08-23 2015-09-23
Die folgende funktioniert nicht:
df <- df %>%
group_by(id) %>%
summarise(start_date != max(start_date))
Fehler: gefunden dupliziert Spaltenname: id
df <- sqldf("select * from df group by id having start_date != max(start_date)")
Fehler in der Aussage: doppelte Spalte Name: ID
Alle Vorschläge wäre großartig.
uns e 'filter()' anstelle von 'summarize()' – mtoto
Verwenden Sie in SQL eine korrelierte Abfrage: 'sqldf (" * "aus df a wählen where start_date nicht in (wählen Sie max (start_date) aus df b wobei b.id = a. id) ")' –