gpt4 book ai didi

r - 在 R 中转换货币

转载 作者:行者123 更新时间:2023-12-04 03:39:08 26 4
gpt4 key购买 nike

我正在用 R 开发一个项目,该项目要求我将一堆不同的货币换成美元。我首先将数值与相关货币分开,然后使用以下代码将它们放在两个新列中:

```
#Extract numeric values from budget
dataframe$BudgetNum <- as.numeric(str_extract(dataframe$budget, "[0-9]+"))

#Extract character (currency) values from budget
dataframe$BudgetCurrency <- str_extract(dataframe$budget, "[aA-zZ]+")
```

我现在对如何将不同的货币兑换成美元感到有点困惑。我尝试使用 if 语句创建一个函数,然后在 sapply() 中运行该函数,但它使我的 R 崩溃了:

convertCurrency <- function(currencyVal){
if(!is.na(dataframe$BudgetCurrency == 'INR')){
BudgetNum = merge.movies.filter$BudgetNum*0.014
return(BudgetNum)
}
}

**0.014 是 INR-USD 汇率

supply()调用如下:

z <- sapply(dataframe$BudgetCurrency, convertCurrency)

我的几行数据是:

    imdb_title  budget     BudgetNum   BudgetCurrency
tt000009 $2500 2500 *NA*
tt0000011 ITL60000 600000 ITL
tt0000012 ROL950000 9500000 ROL
tt0000087 INR52000000 52000000 INR

如果有人能提供任何建议/帮助,我将不胜感激!如果您需要任何其他信息,请告诉我!

最佳答案

这是使用 datastep 的另一种方法.基本上,这是在逐行遍历数据框,并让您根据变量的值做出决定。它是 libr 的一部分包。

显然,我正在弥补转化。但是你可以得到这个想法:

library(libr)

# Create sample data
dataframe <- read.table(header = TRUE, text = '
imdb_title budget BudgetNum BudgetCurrency
tt000009 $2500 2500 NA
tt0000011 ITL60000 600000 ITL
tt0000012 ROL950000 9500000 ROL
tt0000087 INR52000000 52000000 INR')

# Run datastep
dataframe2 <- datastep(dataframe, {

if (is.na(BudgetCurrency))
ConvertedAmount <- BudgetNum
else if (BudgetCurrency == "ITL")
ConvertedAmount <- BudgetNum * 1.5
else if (BudgetCurrency == "ROL")
ConvertedAmount <- BudgetNum * .83
else if (BudgetCurrency == "INR")
ConvertedAmount <- BudgetNum * 0.014

})

# View results
dataframe2
# imdb_title budget BudgetNum BudgetCurrency ConvertedAmount
# 1 tt000009 $2500 2500 <NA> 2500
# 2 tt0000011 ITL60000 600000 ITL 900000
# 3 tt0000012 ROL950000 9500000 ROL 7885000
# 4 tt0000087 INR52000000 52000000 INR 728000

关于r - 在 R 中转换货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66357467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com