用小数和点强制转换数字列

问题描述

我想知道如何将值转换为数字,因为它们涉及小数和点。感谢您的帮助。

c("1.139,0000","1.160,"1.194,"1.533,3500","1.550,"1.602,"1.825,4000","2.042,1234","2.200,0000"
)

所需的输出

c("1139.0000","1160.0000","1194.0000","1533.3500","1550.0000","1602.0000","1825.0000","1825.4000","2042.1234","2200.0000","2200.0000"
    )

解决方法

在基础 R 中,您可以使用 sub 删除 . 并将 , 替换为 .

as.numeric(sub(',','.',sub('.','',x,fixed = TRUE),fixed = TRUE))

# [1] 1139.000 1160.000 1160.000 1160.000 1160.000 1194.000 1533.350 1550.000
# [9] 1550.000 1602.000 1825.000 1825.000 1825.000 1825.000 1825.000 1825.000
#[17] 1825.000 1825.400 1825.000 1825.000 2042.123 2200.000 2200.000 2200.000
#[25] 2200.000 2200.000 2200.000 2200.000 2200.000 2200.000 2200.000 2200.000
#[33] 2200.000 2200.000 2200.000

我们也可以使用 parse_number 中的 readrdecimal_mark 指定为逗号。

library(readr)
parse_number(x,locale = locale(decimal_mark = ','))