2016-07-25 17 views
-1

Ich bin auf der Suche nach einer ähnlichen Funktion/Paket in R zu der Datentabelle in MS Excel (What-If-Berechnungen). Zur Zeit verwende ich Datentabellen in Excel, um mehrere Berechnungen mit Tausenden von Zeilen von Eingabedaten durchzuführen. Ich habe eine Momentaufnahme der Berechnungen angebracht in Excel Daten Tabelle getan:Mehrere Berechnungen in R ähnlich Datentabelle in Excel

enter image description here

Mit anderen Worten, all meinen Formeln/Berechnungen in einem einzigen Register-Tabelle sind, und alle Eingangsdaten in einem anderen Register (mehrere tausend Reihen). Ich benutze Datentabellenoperation, um Ergebnisse für jede Zeile dieses Datensatzes zu berechnen. Dadurch wird meine Tabelle mit allen Berechnungen in nur einem Tab aufgeräumt. Jetzt versuche ich, dasselbe mit R zu implementieren. Jede Hilfe dazu wird sehr geschätzt.

+0

Bitte Lesen Sie die Informationen über [wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) und wie man eine [r Beispiel für ein reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269). Dies wird es anderen sehr erleichtern, Ihnen zu helfen. – zx8754

+0

@ zx8754 Ich habe jetzt ein Bild der Berechnungen aus Excel Datentabelle hinzugefügt, um meine Frage klarer zu machen. Versuchte mein Bestes, um meine Anfrage zu stellen. – Ravikk

+1

Angenommen, Ihr Eingabedatenrahmen heißt * df1 *, können wir berechnen * Calc1 * als: 'df1 $ Calc1 <- df1 $ X * df1 $ Y', für * Calc2 *:' df1 $ Calc2 <- df1 $ Z/df1 $ Y' und für * Calc3 *: 'df1 $ Calc3 <- df1 $ Z + df1 $ X'. – zx8754

Antwort

1

Zuerst lassen Sie uns Ihr Problem machen reproduzierbar:

df <- data.frame(case = 1:12, 
       x = seq(10, 120, by = 10), 
       y = seq(0.5, 1.6, by = 0.1), 
       z = seq(100, 210, by = 10)) 
head(df) 
# case x y z 
# 1 1 10 0.5 100 
# 2 2 20 0.6 110 
# 3 3 30 0.7 120 
# 4 4 40 0.8 130 
# 5 5 50 0.9 140 
# 6 6 60 1.0 150 

Dann können wir dies die traditionelle Art und Weise lösen:

df$calc1 <- df$x * df$y 
df$calc2 <- df$z/df$y 
df$calc3 <- df$z + df$x 

head(df) 
# case x y z calc1 calc2 calc3 
# 1 1 10 0.5 100  5 200.0000 110 
# 2 2 20 0.6 110 12 183.3333 130 
# 3 3 30 0.7 120 21 171.4286 150 
# 4 4 40 0.8 130 32 162.5000 170 
# 5 5 50 0.9 140 45 155.5556 190 
# 6 6 60 1.0 150 60 150.0000 210 

Alternativ Sie transform verwenden:

transform(df, calc1 = x/y, calc2 = z/y, calc3 = z + x)