Ich komme von Stata zu R und habe eine einfache Syntaxfrage, die ich nicht lösen konnte. Ich versuche, mehrere Währungen (GBP EUR JPY) zu durchlaufen, um eine Wechselkursanpassung vorzunehmen. Legen Sie für jeden Datensatz, der auf eine der oben aufgeführten Währungen lautet, "amount_usd" gleich "betrag" dividiert durch den Wechselkurs (USDGBP, USDEUR, USDJPY) fest.Syntax von for-Schleifen in R
Daten erstellen:
df <- data.frame(currency = c("GBP", "GBP", "EUR", "EUR", "JPY"),
amount = c(100, 200, 100, 200, 100),
USDGBP = c(1.5, 1.5, 1.5, 1.5, 1.5),
USDEUR = c(1.1, 1.1, 1.1, 1.1, 1.1),
USDJPY = c(100, 100, 100, 100, 100))
df$amount_usd <- df$amount
ich verschiedene Versionen der for-Schleife unten, aber ohne Erfolg versucht. Ich würde gerne Hinweise auf (1) richtige Loop-Syntax und (2) Tipps, um den Code eleganter zu machen.
df$face_value_curr_usd <- df$face_value_curr
for (curr in c("GBP", "EUR", "JPY")) {
if (df[,which(colnames(df) == "currency")] == curr) {
df[,which(colnames(df) == "amount_usd")] <-
df[, which(colnames(df) == "amount")]/df[,which(colnames(df) == c("USD",curr))]
}
else {
}
}
Die resultierende df $ amount_usd sollte sich auf die Werte annehmen:
c(66.67, 133.33, 90.91, 181.82, 1)
Bitte können Sie das Ergebnis von 'dput (head (df)) einfügen' – dww
Ein reproduzierbares Beispiel und eine gewünschte Ausgabe wäre nützlich. – Cris
Erwartete Ausgabe wird ebenfalls benötigt – dww