In R würde ich gerne die Summe einer Wertspalte (gruppiert durch einen Buchstaben in Spalte 't1') von der Summe derselben Wertspalte (gruppiert durch den gleichen Buchstaben) subtrahieren in Spalte "t2"). Wiederholen Sie den Vorgang für jeden Brief und für jede Jahresgruppe.Finde Datenrahmen Spaltenunterschiede pro Mehrfachgruppierungen
Betrachten;
set.seed(3)
df <- data.frame(age = rep(1:3,each=25),
t1 = rep(expand.grid(LETTERS[1:5],LETTERS[1:5])[,1],3),
t2 = rep(expand.grid(LETTERS[1:5],LETTERS[1:5])[,2],3),
value = sample(1:10,75,replace=T))
Dieser Datenrahmen zeigt 3 Werte in der 'Alter' Spalte 2 Spalten mit Kategorien (T1 und T2) und einem zugeordneten Wert (value).
Als Beispiel ist hier, wie es könnte für ‚A‘ arbeiten:
library(plyr);
# extract rows with A
df2 <- df[df$t1=="A" | df$t2=="A",]
# remove where t1 and t2 are the same (not needed)
df2 <- df2[df2$t1 != df2$t2,]
# use ddply to subtract sum of 'value' for A in t1 from t2
df2 <- ddply(df2, .(age), transform, change = sum(value[t2=="A"])-sum(value[t1=="A"]))
# create a name
df2$cat <- "A"
# remove all the duplicate rows, just need one summary value
df2 <- df2[ !duplicated(df2$change), ]
# keep summary data
df2 <- df2[,c(1,6,5)]
jetzt brauche ich diese Werte für alle zu tun, die in T1 und T2 auftreten (in diesem Fall A, B, C & D), Erstellen einer Zusammenfassung von 12 Zeilen.
Ich versuchte eine Schleife mit;
for (c in as.character(unique(df$t1)))
bekam aber nowehere
Dank viel
Ich denke, ich vermisse etwas ... Wie können Sie den Wert von t1 oder t2 subtrahieren? Diese Spalten sind Buchstaben. –
Ihre Beschreibung ist mir nicht klar. (Zum einen ist "A" in keiner Weise eine Variable in Ihren Daten.) Geben Sie vielleicht einfach ein df_out an, das die erwarteten Ergebnisse enthält. – Frank
Entschuldigung, es könnte meine schlechte Erklärung sein; Wo t2 = A, summiere dann 'Wert', und wo t1 = A, summiere 'Wert'. Ziehen Sie letztere von den ersteren ab. Wiederholen Sie dies für jeden eindeutigen Buchstaben für jede Jahrgangsgruppe. – Sam