2016-08-04 16 views
0

Ich habe eine Liste mit 16 Datenrahmen alle mit nur zwei SpaltenSubset Datenrahmen in einer Liste gespeichert

DateTime Value 
2009-05-31 100 
2009-06-30 200 
2009-07-31 300 
and so on 

ich alle Datenrahmen in der Liste auf einem Datum Filter basierend auf dem Teil will. Ich habe den folgenden Code ausprobiert, aber es hat nicht funktioniert

> c <- function(df) { 
+ within(df, DateTime >= "2009-06-30") 
+ } 
> train_data <- lapply(my_data, c) 

Fehle ich etwas hier fehlt?

Vielen Dank.

+0

Versuchen Sie, mal in sachgemäßes Format 'lapply (d, Funktion (x, y) x [as.POSIXct (x $ Datetime)> y zu transformieren, ], as.POSIXct ("2009-06-30")) '. Vermeiden Sie neben Ihrem Problem, Funktionen oder Variablen nach internen Funktionen zu benennen ('c()'). – Jimbou

Antwort

1

Versuchen Sie dies (sind die Datetime-Spalten in Ihrer Datenrahmen unter der Annahme, wie Daten formatiert):

c <- function(df){ 
df[df$DateTime >= as.Date("2009-06-30"),] 
} 

train_data <- lapply(my_data, c) 

Oder wenn Sie verwenden möchten with:

c <- function(df){ 
with(df, df[DateTime >= "2009-06-30",]) 
} 
+0

Danke, es hat funktioniert. Könnten Sie mir den Unterschied zwischen Ihrer Antwort und dem, was ich in der Frage gepostet habe, erklären, da die Logik für beide –

+0

gleich aussieht? Ich denke, es ist Ihre Verwendung von 'innerhalb'. Ich bin immer verwirrt zwischen "innerhalb" und "mit", also bin ich nicht die beste Person, um es zu erklären. Ich denke, "innerhalb" ändert das data.frame und fügt die im Ausdruck ausgewerteten Elemente hinzu. Während 'mit' den Ausdruck in einer Umgebung auswertet, die mit den Variablen im Datenrahmen erstellt wurde. Ich habe die Antwort editiert, um eine Implementierung mit 'with' einzuschließen, um zu sehen, ob es mehr Sinn macht. – thepule

0

Nevermind Jungs, fand ich die Antwort

training_data <- lapply(my_data, subset, DateTime >= "2009-06-30") 
0

Sie haben eine Teilmenge Methode:

new_df = subset(df, DateTime > "2009-06-30") 

Der Ausgang wird sein:

DateTime Value 
3 2009-07-31 300 
Verwandte Themen