r - 以千/百万而不是更小的数字替换逗号
问题描述
我正在阅读具有多种格式的已发表论文的数据。如果有数千或数百万,我想删除数字中的逗号,但不能更小。这是因为一些作者使用逗号来表示小数位(例如,“1,1”)。
这是一个不起作用的简单示例:
library(stringr)
> text = c('1,1', '2,222', '3,333,333')
> str_replace_all(string=text, pattern='[0-9],[0-9][0-9][0-9]', replacement = '[0-9][0-9][0-9][0-9]')
[1] "1,1" "[0-9][0-9][0-9][0-9]" "[0-9][0-9][0-9][0-9],333"
理想情况下,第二个数字将更改为“2222”,第三个“3333333”,第一个剩余为“1,1”(我可以轻松处理小数位的逗号/句号问题)。
解决方案
您可以使用积极的前瞻:
gsub(",(?=\\d{3,})", "", text, perl = TRUE)
[1] "1,1" "2222" "3333333"
这里的前瞻是在;(?=\\d{3,})
之后至少 3 个d
igits ,
如果满足该条件,,
则删除 。
如果您愿意str_remove
,可以使用负前瞻:
library(stringr)
str_remove_all(text, ",(?!\\d$)")
如果逗号后面跟在字符串的结尾 ()之前的单个igit,则此处的前瞻(?!\\d$)
不允许删除逗号d
$
推荐阅读
- couchdb - CouchDB 错误 -Malformed AuthSession cookie -- 版本 2,2
- wordpress - Wordpress 编辑器奇怪的脚本
- r - r 将 png 设备的大小设置为 grob 大小
- actionscript-3 - 在 AS3 中使用 sharedObject 保存和加载
- sql-server - 活动监视器在 SSMS 17.8.1 中始终暂停
- ios - Ionic - iPhone X 状态栏覆盖共享标题组件
- java - SMBJ 抛出传输/eof 异常
- spring - 由于 Spring 框架工作导致的 JVM 缓存损坏
- jquery - 如何使用 CSS 将“+”旋转为“x”?
- javascript - 图标未正确加载 react-native-vector-icons