r - 从 CSV 解析货币值,转换为百万和十亿的数字后缀

标签 r currency read.csv suffix

我很好奇 R 中是否有任何开箱即用的函数可以处理这个问题。

我有一个 CSV 文件,我正在使用 read.csv 将其读入数据框。 CSV 中的一列包含以下格式的货币值

Currency
--------
$1.2M
$3.1B
N/A

我想将这些转换为可以对其进行计算的更可用的数字,因此它看起来像这样:
Currency
----------
1200000
3100000000
NA

我最初的想法是根据包含 *M、*B 或 N/A 的行以某种方式将数据帧分为 3 个部分。然后用gsub替换$和M/B,然后将剩下的数乘以1000000或1000000000,最后将3个子集重新加入1个数据帧。

但是我很好奇是否有一种更简单的方法来处理 R 中的这种转换。

最佳答案

我们可以使用 gsubfn 将 'B'、'M' 替换为 'e+9'、'e+6' 并转换为 numeric ( as.numeric )。

is.na(v1) <- v1=='N/A'
options(scipen=999)
library(gsubfn)
as.numeric(gsubfn('([A-Z]|\\$)', list(B='e+9', M='e+6',"$"=""),v1)) 
#[1]    1200000 3100000000         NA
编辑:根据@nicola 的建议修改
数据
v1 <- c('$1.2M', '$3.1B', 'N/A')

关于r - 从 CSV 解析货币值,转换为百万和十亿的数字后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773080/

相关文章:

来自在线网页链接的 R read_excel 生成一个空数据框

R将一维数据框转换为二维数据框

删除 tinyMCE 中的/n/r

string - 使用 R 填充文本文件

python-3.x - Pandas pd.melt 在使用 500GB ram 时在 unpivoting 3.5 GB csv 上抛出内存错误

python - 如何解决读取虹膜数据时出现超时错误?

r - 为什么直接调用 mget() 与在另一个函数中调用 mget() 时,data.table j 有不同的环境?

php 货币格式

javascript - 如何在 Javascript 中添加美元金额

ruby-on-rails - Ruby 和金钱,在 Rails 应用程序中,如何在数据库中存储金钱值?