Ich versuche, eine elegante Lösung für ein Problem ohne komplexe Teilmenge und/oder Zeile für Zeile Iteration zu finden. Ich werde über das Beispiel erklären:Aggregierte bedingte Anweisungen
# Load data
df1 <- mtcars
# Can aggregate with simple math functions i.e. mean or sum
hp_by_cyl <- aggregate(hp ~ cyl, data=df1, mean)
> hp_by_cyl
cyl hp
1 4 82.63636
2 6 122.28571
3 8 209.21429
Ok. Aber in meinen wirklich viel komplexeren Daten möchte ich einen logischen Wert aggregieren - d. H. Wenn x für irgendeine Zeile der Kategorie A wahr ist, dann ist y = 1. Also mein Beispiel zu verlängern ich eine Spalte mit logischen Variable erstellen:
df1$logic <- ifelse(df1$gear==4 & df1$hp < 150, 1, 0)
# How do I aggregate the logical values levels of cyl to answer yes/no
# if any car with x cylinders has 4 gears and < 150 hp ?
# So I want an finished table like this:
cyl logic
4 1
6 1
8 0
Also meine Frage ist, wie das Aggregat zu verwenden (oder alternativ) Befehl eine Tabelle wie folgt zu produzieren?, d. H. Den logischen Status zu kombinieren, nicht den numerischen Wert?
Ich brauche auch mit codierten fehlenden Werten auch in der Realität zu tun, so dass die Komplexität zu emulieren ich einen der Logik der mache 99:
df1[5, ]$logic <- 99
Wenn für ein gegebenes Niveau von cyl
ein Wert 1 ist, die 99 kann ignoriert werden - wenn jedoch alle anderen 0 sind, dann sollte das Aggregat 99 sein.
Entschuldigung, wenn es eine einfache Antwort gibt, sehe ich nicht in meinen realen Daten, es scheint entmutigend. Ich könnte eine böse Lösung aushacken, aber ich weiß, dass es sehr langsam sein wird und ich einen 14000 X 140 großen Datensatz habe. Vielen Dank im Voraus alles.
Was ist das Problem? – Carl
Ich habe keine Ahnung, wie man es programmiert, um die Übersichtstabelle zu erstellen, die ich möchte. Bearbeitet für Klarinette – user2498193