将货币字符串转换为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