Hallo ,
Ich versuche, eine Variable (Typ2) aus mehreren Zeilen pro ID mit dem Variablentyp zu erstellen. Ich möchte eine Tabelle wie diese verdecken:
ICH WÜRDE | Typ |
1 | EIN |
1 | EIN |
1 | B |
2 | EIN |
2 | EIN |
3 | B |
3 | B |
3 | B |
Zu:
Wobei Typ2 ist:
Wenn Typ immer A ist, dann Typ2=A;
Wenn Typ immer B ist, dann Typ2=B;
Wenn type eine Kombination aus A und B ist, dann type2=C;
Vielen Dank
Viele Möglichkeiten, dies zu tun. Ich würde berechnen, wie oft type in ID vorkommt und wenn es der gleiche Betrag ist wie ID in data, dann wissen Sie, dass es der einzige Typ ist.
Zusammenfassung mit Formel:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt_summary = dt << Summary(
Output table("To"),
Group(:ID),
N(:type),
Subgroup(:type),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << New Column("type2", Character, "Nominal",
<< Set Each Value(
If(:"type, A"n == 0, "B",
:"type, B"n == 0, "A",
"C"
)
)
);Und andere, die Col Sum mit Select duplizierten Zeilen verwenden:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt << New Column("type2", Character, Nomimal, Formula(
If(Col Sum(1, :ID) == Col Sum(1, :ID, :type),
:type,
"C"
)
));
wait(1);
dt:type2 << Delete Formula;
wait(1);
dt << Select Duplicate Rows(Match(:ID, :type2));<BR />wait(1);<BR />dt << Delete Rows;Weitere Informationen zu den Funktionen, insbesondere Col Sum, finden Sie im Scripting-Index.
Hallo,
Es sieht so aus, als ob Ihre Tabelle nach :ID und :type sortiert ist. Wenn dies der Fall ist oder Sie bereit sind, es zu sortieren, können Sie dies ausnutzen und eine (relativ) einfache Formel für die Spalte :type2 verwenden:
If( :type[Col Min( Row(), :ID )] == :type[Col Max( Row(), :ID )],
:type,
"C"
)
Danke schön,
Brady