Ich habe einen Datenrahmen von 15000 Obs. von 45 Variablen, mit einer ähnlichen Struktur/Modus/Klasse wie der unten angegebene Beispiel-Eingabedatenrahmen.entfernen/Teilmenge oder wählen Sie Spalten basierend auf einem Teil des Header-Namen
Was ich tun möchte ist, wählen Sie die Spalte "Datum" + Spalten mit "_MIN" als Teil der Kopfzeile und legen Sie sie in eine neue df. & Wählen Sie die Spalte "Datum" + Spalten mit "_MIN" als Teil der Kopfzeile und legen Sie sie in eine neue df.
So bin ich im Grunde auf der Suche nach eine Möglichkeit zur Auswahl oder Teilmenge ganze Spalten basierend auf einem Teil des Namens der Spaltenüberschrift. Ein Beispiel: mehrere Spalten enthalten einen "_" Unterstrich und ich möchte diese Spalten löschen oder auswählen.
INPUT dataframe:
Example <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MIN=1:5, ca_MAX=2:6, cb_MIN=3:7, cb_MAX=4:8)
>Example
Date ca_MIN ca_MAX cb_MIN cb_MAX
1 1979-01-01 1 2 3 4
2 1979-01-02 2 3 4 5
3 1979-01-03 3 4 5 6
4 1979-01-04 4 5 6 7
5 1979-01-05 5 6 7 8
OUTPUT dataframes, selected based on the column names "_MAX", "_MIN":
Example_MIN <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MIN=1:5, cb_MIN=3:7)
Example_MAX <- data.frame(Date=seq(as.Date("1979/1/1"),as.Date("1979/1/5"), by="day"), ca_MAX=2:6, cb_MAX=4:8)
>Example_MIN
Date ca_MIN cb_MIN
1 1979-01-01 1 3
2 1979-01-02 2 4
3 1979-01-03 3 5
4 1979-01-04 4 6
5 1979-01-05 5 7
Im Moment mit es funktioniert:
Example_MIN <-Example
Example_MAX <-Example
subset(ExampleMIN,select=-c(2,4))
subset(ExampleMAX,select=-c(3,5))
Das gibt mir jedoch einen Fehler für die große Datenmenge (obwohl das Ergebnis für mich funktioniert):
Error in `[.data.table`(x, r, vars, with = FALSE) : j out of bounds
Gibt es eine weniger umständliche Art, dies zu tun?
Ich würde es vorziehen, auch mit Datensatz mit einer großen Anzahl von Spalten zu arbeiten & mit der Spalte "_MIN" & "_MAX" nicht als ungerade und gerade Spaltennummer sortiert?
Ich habe Post gesehen, die verwandt sind, aber ich habe es nicht geschafft, so weit, einen Code zu erstellen, die bearbeitet ...
'Beispiel [grepl (" _ MIN ", Namen (Beispiel))]' und 'Beispiel [grepl (" _ MAX ", Namen (Beispiel))]' –
und aus der Fehlermeldung sieht es wie eine 'data.table' aus. In diesem Fall 'Beispiel [, grepl (" _ MIN ", Namen (Beispiel)), mit = F]' –
@Ronak Shah. ja anscheinend irgendwo in meinem script wurde mein data.frame zu einer data.table. Deshalb haben meine früheren Versuche nicht funktioniert. Danke, dass du darauf hingewiesen hast. Das werde ich bei der nächsten Operation beachten :) –