Entschuldigung ein absoluter Anfänger, also haben einige sehr grundlegende Fragen!Subsetting eines Datenrahmens basierend auf Werten in einem anderen Datenrahmen
Ich habe eine sehr große Datenmenge, die von einem Haushalt einzelne Transaktionen auflistet. Beispiel ist unten.
# hh_id trans_type transaction_value
# 1 hh1 food 4
# 2 hh1 water 5
# 3 hh1 transport 4
# 4 hh2 water 3
# 5 hh3 transport 1
# 6 hh3 food 10
# 7 hh4 food 5
# 8 hh4 transport 15
# 9 hh4 water 10
Ich möchte einen neuen Datenrahmen erstellen, die alle Transaktionen für nur die Haushalte aufgeführt hat, die Transaktionen in der „Wasser“ -Kategorie haben. (ZB würde ich ein df ohne hh3 oben haben wollen, weil sie keine Ausgaben in "Wasser" hatten)
als ein erster Schritt, ich habe einen Datenrahmen mit einer Spalte (hh_ids), die nur die Haushalts-IDs hat die, die ich will. Wie unterteile ich dann meinen größeren Datenrahmen, um alle Zeilen von Transaktionen zu entfernen, die nicht aus einem Haushalt stammen und Ausgaben in der Kategorie "Wasser" haben?
Daten
## data from @gung
d <- read.table(text="hh_id trans_type transaction_value
hh1 food 4
hh1 water 5
hh1 transport 4
hh2 water 3
hh3 transport 1
hh3 food 10
hh4 food 5
hh4 transport 15
hh4 water 10", header=T)
'df2 <- df1 [! Df1 $ TRANS_TYPE = "Wasser",]' –
@akrun es tölpeln ... diese ist sicherlich keine ursprüngliche Frage –
Sie können benutze 'library (data.table); setDT (df1) [, if (any (trans_type ==" water ")) .SD, by = hh_id]' oder 'library (dplyr); df1%>% group_by (hh_id)%>% filter (beliebig (trans_type == "water")) 'Ich bin mir sicher, dass es Duples geben würde, aber leider konnte ich es jetzt nicht finden. (Es dauerte fast 10 Minuten, um Google zu suchen und konnte es immer noch nicht finden. Ist es nicht effizienter, eine Antwort einzugeben anstatt die Duplikate zu suchen?) – akrun