Je viens de R Stata et j'ai une question de syntaxe simple que je n'ai pas été capable de résoudre. J'essaie de boucler plusieurs devises (GBP EUR JPY) pour effectuer un ajustement du taux de change. Pour chaque enregistrement libellé dans l'une des devises énumérées ci-dessus, définissez "amount_usd" égal à "amount" divisé par le taux de change (USDGBP, USDEUR, USDJPY).Syntaxe des boucles for dans R
Créer des données:
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
J'ai essayé différentes versions de la boucle ci-dessous, mais sans chance. J'apprécierais des pointeurs sur (1) la syntaxe de boucle appropriée, et (2) des conseils pour rendre le code plus élégant.
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 {
}
}
La résultante df amount_usd de $ devrait prendre les valeurs:
c(66.67, 133.33, 90.91, 181.82, 1)
S'il vous plaît pourriez-vous coller dans le résultat de 'dput (head (df))' – dww
Un exemple reproductible et une sortie désirée serait utile. – Cris
Sortie attendue également nécessaire – dww