我來自Stata的R,有一個簡單的語法問題,我一直無法解決。我試圖循環多種貨幣(GBP EUR JPY)進行匯率調整。對於以上列貨幣計價的每個記錄,設置「amount_usd」等於「金額」除以匯率(USDGBP,USDEUR,USDJPY)。for循環的語法在R
創建數據:
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
我試過下面環路各種版本的,但沒有任何運氣。我會很欣賞(1)適當循環語法的指針,以及(2)使代碼更優雅的技巧。
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 {
}
}
得到的DF $ amount_usd應採取的值:
c(66.67, 133.33, 90.91, 181.82, 1)
請粘貼'dput(head(df))'的結果 – dww
可重現的例子和所需的輸出將會很有用。 – Cris
預期產量也需要 – dww