R 将正数和负数的 $xxx.xx 更改为 xxx.xx 但不舍入

2023-12-29

我有一个 df,其中第 2 列及以后的列是美元金额,例如 $1004.23、($1482.40)、$2423.94 等。类似于下面的示例:

> df
  id   desc    price
1  0    apple   $1.00
2  1    banana  ($2.25)
3  2    grapes  $1.97

我想首先将括号中的数字转换为负数,然后去掉美元符号的数字。

for(i in 2:ncol(df)){
    df[[i]] <- as.character(sub(")", "", sub("(", "-", df[[i]], fixed=TRUE), fixed=TRUE))
    df[[i]] <- as.numeric(gsub('[$,]', '', as.character(df[[i]])))
}

目前我的代码几乎做了我想要的事情。它正在做的一件事是我不想要/需要的四舍五入。每当我运行代码时,它也会对数字进行舍入,使得上面的 df 变为:

> df
  id   desc    price
1  0    apple  1
2  1    banana -2
3  2    grapes 2

关于如何在不将数字四舍五入的情况下实现我的目标有什么建议吗?它扰乱了很多后续的计算。


另一种可能的解决方案基于您自己的尝试,并考虑到您需要转换比示例中更多的列:

d[,-c(1:2)] <- lapply(d[,-c(1:2)], 
                      function(x) as.numeric(gsub('[$,]', '', sub(")", "", sub("(", "-", x, fixed=TRUE), fixed=TRUE))))

这使:

> d
  id   desc price price2
1  0  apple  1.00  -5.90
2  1 banana -2.25   2.39
3  2 grapes  1.97  -0.95

或者使用 for 循环:

for(i in 3:ncol(d)){
  d[[i]] <- as.numeric(gsub('[$,]', '', sub(")", "", sub("(", "-", d[[i]], fixed=TRUE), fixed=TRUE)))
}

或者使用data.table包裹:

library(data.table)
cols <- names(d)[-c(1:2)]
setDT(d)[, (cols) := lapply(.SD, function(x) as.numeric(gsub('[$,]', '', sub(")", "", sub("(", "-", x, fixed=TRUE), fixed=TRUE)))),
         .SDcols = cols]

或者使用dplyr包裹:

library(dplyr)
d %>% 
  mutate_all(funs(as.numeric(gsub('[$,]', '', sub(")", "", sub("(", "-", ., fixed=TRUE), fixed=TRUE)))), -c(1:2))

这都会给你相同的结果。


使用数据:

d <- structure(list(id = 0:2, desc = c("apple", "banana", "grapes"), 
                    price = c("$1.00", "($2.25)", "$1.97"), 
                    price2 = c("($5.9)", "$2.39", "($0.95)")),
               .Names = c("id", "desc", "price", "price2"), class = "data.frame", row.names = c("1", "2", "3"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 将正数和负数的 $xxx.xx 更改为 xxx.xx 但不舍入 的相关文章

  • grep() 搜索数据框的列名

    有没有更清晰 更简单 更直接 更短的方法来做到这一点 其中 df1 是数据框 names df1 grep Yield names df1 我想返回任何包含单词 yield 的列名称 Thanks grep has a value应该适用于
  • 有没有办法在 RStudio 中调试 RScript 调用?

    假设我从命令行运行 R 脚本 如下所示 Rscript prog R x y z 我想检查某一行的代码 目前 我无法在 RStudio 中以交互方式调试它 因为我不知道如何传递参数 由于它设计为从命令行运行 因此如何通过命令行 RStudi
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 如何使用 r 中的 caret 包在最佳调整超参数的 10 倍交叉验证中获得每次折叠的预测?

    我试图使用 R 中的插入符包使用 10 倍交叉验证和 3 次重复来运行 SVM 模型 我想使用最佳调整的超参数获得每次折叠的预测结果 我正在使用以下代码 Load packages library mlbench library caret
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 分离并重新附加“tools:rstudio”

    又名玩火 以下不起作用 rstd obj lt as environment tools rstudio detach tools rstudio attach rstd obj name tools rstudio 好吧 它似乎有效 但随
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 当每个记录都是一个段落并且某些记录有 4 个字段而其他记录有 6 个字段时,如何将文本文件读入 R

    如何读取文本文件 其中每条记录都是一个段落 每个换行符表示单独的字段 复杂的是 有些记录有 4 行 有些记录有 6 行 当字段数量的差异为 1 时 DWin 解决了我的问题 但当字段数量差异为 2 时 一切都崩溃了 你可以有一个在这里看看他
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug

随机推荐

  • 如何在 BigQuery 标准 SQL 中获取数组的切片?

    在 BigQuery 中 我有一个表 其中包含path像这样的列 ID Path 1 foo bar baz 2 foo bar quux blat 我希望能够在正斜杠上分割路径 并选择一个或多个路径部分 然后重新连接它们 在 Postgr
  • Echo与Echo的区别[特殊字符]

    编写批处理文件时 我发现有些人使用Echo Echo Echo 等等 这些回显空行 那么这些之间有什么区别Echo Special Character 您可以使用许多不同的字符echo 之一 但对于一个人来说有很多要求good choice
  • React-Native 中的倒计时器

    我想在反应原生中加载屏幕时从 3 倒计时到 1 我用 setTimeOut 尝试过 但没有成功 我在这里做错了什么 我怎样才能实现这个目标 当屏幕加载时 我想以 1 秒的间隔显示 3 gt 2 gt 1 这是我的代码 constructor
  • 创建 SAML 断言并签署响应

    我有一个 Java Web 应用程序 我想为我的应用程序实现 SAML 单点登录 我有这个GitHub onelogin 程序 https github com onelogin java saml发送请求并获取响应 但它无法正常工作 我在
  • 如何使 IEnumerable 只读?

    为什么是列表list1Instance and p in the Main下面的代码的方法指向同一个集合 class Person public string FirstName string Empty public string Las
  • 将列添加到稀疏矩阵

    当我执行以下代码时 我得到一个稀疏矩阵 import numpy as np from scipy sparse import csr matrix row np array 0 0 1 2 2 2 col np array 0 2 2 0
  • 实体框架是否与 SQL Server 绑定?

    如果我想连接到 Oracle MySQL 甚至 MS Access 怎么办 不 它使用 ADO Net 提供程序 模型插入数据库提供程序以提供对任何第三方数据库的访问 可用列表第三方 EF 提供商在这里 http msdn microsof
  • 进入前台时的 UIRefreshControl 错误

    当我使用时我注意到一个小错误 但真的很烦人 UIRefreshControl在我的视图控制器中 当应用程序从后台返回时UIRefreshControl已经加载 看起来像这样 正如你所看到的 我使用了一个自定义导航控制器 它像 Faceboo
  • 为什么 Google 云端硬盘返回“无法解析内容范围标头。”?

    这是我的简单代码 用于恢复 可能 中断的 Google Drive 上传 Using message New ByteArrayContent New Byte message Headers ContentRange New Header
  • 从左到右表达式求值

    在 C 中 是否保证表达式从左到右计算 例如 myClass GetClass if myClass null myClass Property gt 0 continue 是否存在不符合规定的语言 您实际上指的是一种称为 短路逻辑表达式
  • 如何拥有与 OnPropertyChanged 一起使用的 UserControl 的可绑定属性

    我有一个带有一些公共属性的简单用户控件 WinForms 当我使用此控件时 我想将 DataSourceUpdateMode 设置为的数据绑定到这些属性属性改变时 数据源是一个实现 INotifyPropertyChanged 的 类 我知
  • 如何使用 Django 智能选择来过滤 ManyToManyField?

    class Course models Model course code models CharField max length 100 unique True title models CharField max length 200
  • 插入数据库时​​对密码进行哈希加密

    我正在为学校做一个应用程序 在将密码插入我的用户数据库时需要加密密码的帮助 我正在使用 C 编程语言进行编程 并且使用 MS server 2008 R2 来操作我的数据库 我正在考虑进行哈希加密 如果有人帮助我 我会很高兴 这是我将数据插
  • 查找 System.AccessViolationException 的原因

    我们的应用程序遇到了奇怪的致命 System AccessViolationException 当我们配置 AppDomain CurrentDomain UnhandledException 事件来记录异常时 我们会看到这些 Except
  • 这个 PHP 代码安全吗?

    只是一个简单的问题 以下 PHP 代码安全吗 还有什么你认为我可以或应该补充的吗 post GET post if is numeric post post mysql real escape string post else die NA
  • C# 将一个字符串的一部分复制到另一个字符串

    我正在尝试将文本框的部分文本复制到另一个字符串 例如 如果我的文本框包含 10 个字符 我想将字符 3 到字符 7 复制到另一个名为 TEST 的字符串 我们该怎么做呢 when textbox contains ABCDEFGHIJ th
  • 从 R 中的一系列情节创建电影 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有一种简单的方法可以通过在 R 中将多个情节拼接在一起来创建 电影 这是我使用 R 帮助找到的一种方法 要创建单独的图像帧 jpe
  • 写入 log4net FileAppender 时存在多线程性能问题

    TickZoom 是一款非常高性能的应用程序 它使用自己的并行化库和多个操作系统线程来平滑地利用多核计算机 该应用程序遇到了瓶颈 用户需要从单独的操作系统线程将信息写入 LogAppender FileAppender 使用 Minimal
  • hide() 单选按钮*和*它在 jquery 中的文本标签

    我正在回顾最近的一个项目 解决可访问性问题 并确保所有表单元素都有标签 将标签文本放入标签中会导致我之前编写的一些笨拙代码出现问题 基本上 如果您有一个单选按钮及其标签
  • R 将正数和负数的 $xxx.xx 更改为 xxx.xx 但不舍入

    我有一个 df 其中第 2 列及以后的列是美元金额 例如 1004 23 1482 40 2423 94 等 类似于下面的示例 gt df id desc price 1 0 apple 1 00 2 1 banana 2 25 3 2 g