带小数点和小数点的数字列的强制转换
Coercion of numeric columns with decimals and points
我想知道如何将值转换为数字,因为它们涉及小数和点。感谢您的帮助。
c("1.139,0000", "1.160,0000", "1.160,0000", "1.160,0000", "1.160,0000",
"1.194,0000", "1.533,3500", "1.550,0000", "1.550,0000", "1.602,0000",
"1.825,0000", "1.825,0000", "1.825,0000", "1.825,0000", "1.825,0000",
"1.825,0000", "1.825,0000", "1.825,4000", "1.825,0000", "1.825,0000",
"2.042,1234", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000",
"2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000",
"2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000"
)
期望的输出:
c("1139.0000", "1160.0000", "1160.0000", "1160.0000", "1160.0000",
"1194.0000", "1533.3500", "1550.0000", "1550.0000", "1602.0000",
"1825.0000", "1825.0000", "1825.0000", "1825.0000", "1825.0000",
"1825.0000", "1825.0000", "1825.4000", "1825.0000", "1825.0000",
"2042.1234", "2200.0000", "2200.0000", "2200.0000", "2200.0000",
"2200.0000", "2200.0000", "2200.0000", "2200.0000", "2200.0000",
"2200.0000", "2200.0000", "2200.0000", "2200.0000", "2200.0000"
)
在 base 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
我们也可以使用 readr
中的 parse_number
指定 decimal_mark
作为逗号。
library(readr)
parse_number(x, locale = locale(decimal_mark = ','))
我想知道如何将值转换为数字,因为它们涉及小数和点。感谢您的帮助。
c("1.139,0000", "1.160,0000", "1.160,0000", "1.160,0000", "1.160,0000",
"1.194,0000", "1.533,3500", "1.550,0000", "1.550,0000", "1.602,0000",
"1.825,0000", "1.825,0000", "1.825,0000", "1.825,0000", "1.825,0000",
"1.825,0000", "1.825,0000", "1.825,4000", "1.825,0000", "1.825,0000",
"2.042,1234", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000",
"2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000",
"2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000", "2.200,0000"
)
期望的输出:
c("1139.0000", "1160.0000", "1160.0000", "1160.0000", "1160.0000",
"1194.0000", "1533.3500", "1550.0000", "1550.0000", "1602.0000",
"1825.0000", "1825.0000", "1825.0000", "1825.0000", "1825.0000",
"1825.0000", "1825.0000", "1825.4000", "1825.0000", "1825.0000",
"2042.1234", "2200.0000", "2200.0000", "2200.0000", "2200.0000",
"2200.0000", "2200.0000", "2200.0000", "2200.0000", "2200.0000",
"2200.0000", "2200.0000", "2200.0000", "2200.0000", "2200.0000"
)
在 base 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
我们也可以使用 readr
中的 parse_number
指定 decimal_mark
作为逗号。
library(readr)
parse_number(x, locale = locale(decimal_mark = ','))