Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将货币字符串转换为R中的数字_R - Fatal编程技术网

将货币字符串转换为R中的数字

将货币字符串转换为R中的数字,r,R,亲爱的社区:, 我现在正在研究一种方法,将存储为字符的货币数据向量转换为数字向量,并能够将货币转换为另一种货币 假设我的向量是: x <- c("$5M", "€10B", "CHF5K") x只需将其矢量化,我认为不需要循环 multiplier <- recode(gsub('.*([[:alpha:]]+)$', '\\1', x), K = 1e3, M = 1e6,

亲爱的社区:, 我现在正在研究一种方法,将存储为字符的货币数据向量转换为数字向量,并能够将货币转换为另一种货币

假设我的向量是:

x <- c("$5M", "€10B", "CHF5K")

x只需将其矢量化,我认为不需要循环

multiplier <- recode(gsub('.*([[:alpha:]]+)$', '\\1', x),
                     K = 1e3,
                     M = 1e6,
                     B = 1e9,
                     .default = NA_real_)
multiplier
# [1] 1e+06 1e+09 1e+03
空白是如何呈现的。。。处理unicode可能需要更多的工作

xnum <- as.numeric(gsub('[^-0-9.]', '', x))
xnum
# [1]  5 10  5
根据计算/打印输出时需要的内容,可以很容易地进行更正:

xnum * multiplier / 1e6
# [1] 5e+00 1e+04 5e-03

在这一点上,您所需要的是转换成美元。你应该能够像我用乘法器做的那样做
recode(currency,…)
,然后用这个转换因子乘以
xnum

这可能是一个更好的问题,因为我投票将这个问题作为离题题来结束,因为更适合看一看。它提出了几个应对当前汇率的方案,真是天才!感谢您的时间和回答:)
cats<-convMK(cats)
cats <- convCurr2(cats)
multiplier <- recode(gsub('.*([[:alpha:]]+)$', '\\1', x),
                     K = 1e3,
                     M = 1e6,
                     B = 1e9,
                     .default = NA_real_)
multiplier
# [1] 1e+06 1e+09 1e+03
currency <- gsub('^([^-0-9.]*)[-0-9.].*', '\\1', x)
currency
# [1] "$"   " "   "CHF"
xnum <- as.numeric(gsub('[^-0-9.]', '', x))
xnum
# [1]  5 10  5
xnum * multiplier # all in "1" units
# [1] 5e+06 1e+10 5e+03
xnum * multiplier / 1e6
# [1] 5e+00 1e+04 5e-03