2016-05-12 12 views
0

Ich versuche, meine Daten nach Jahren zu unterteilen, aber ich habe täglich Punkte, etwas wie das, was ich unten gegeben bin.Teilmenge Daten nach Jahr angegeben TT/MM/JJJJ

sell Buy Country Date 
0.00 25.00 AA 17/03/2005 
9.09 45.45 AA 16/12/2004 
9.09 45.45 AA 16/04/2009 
18.18 27.27 AA 18/11/2004 

Ich mag die Teilmenge für das Jahr 2004 und soll

sell Buy Country Date 
18.18 27.27 AA 18/11/2004 
9.09 45.45 AA 16/12/2004 

Gibt es einen Code oder eine Funktion erhalten, die dies tun können?

Prost

+0

Wenn Ihre Termine als Daten formatiert sind, eine normale Untergruppe arbeitet mit 'lubridate :: year':' df [Jahr (df $ Date) = = 2004,] ' – alistaire

+1

@GauravTaneja' as.Date' ist von der Basis R, nicht 'lubridate' – Jaap

+0

Dank @Procrastinatus Maximus, ich denke, Alistaires Kommentar deckt es ab, damit meine gelöscht haben. –

Antwort

2

Ich würde das Datumsfeld immer sicherstellen, ist in Datumsformat. Dann könnten Sie Base-R subseting zum Filtern von Zeilen

Angenommen verwenden df ist Ihr data.frame

Base-R:

df$Date <- as.Date(df$Date, '%d/%m/%Y') 
df[format(df$Date, '%Y') == "2005", ] 

Dplyr:

library(dplyr) 
filter(df, format(df$Date, '%Y') == "2005") 
0

Hier ist eine Option mit substr und subset

subset(df1, substr(Date, nchar(Date)-3, nchar(Date)) == 2004) 
# sell Buy Country  Date 
#2 9.09 45.45  AA 16/12/2004 
#4 18.18 27.27  AA 18/11/2004 

Oder ein anderer Ansatz mit data.table und lubridate

library(lubridate) 
library(data.table) 
setDT(df1)[year(dmy(Date))==2004] 
# sell Buy Country  Date 
#1: 9.09 45.45  AA 16/12/2004 
#2: 18.18 27.27  AA 18/11/2004