通过将逗号替换为“。”将字符转换为数字。

Posted

技术标签:

【中文标题】通过将逗号替换为“。”将字符转换为数字。【英文标题】:Turn character to numeric by replacing commas with "." 【发布时间】:2022-01-22 19:49:15 【问题描述】:

我有下面的数据框,我想通过将 comma 符号替换为 . 来将 Sold_Pr 列转换为数字

subs<-structure(list(Sold_Pr = c("6,500.00", "173,000.00", "60,000.00"
), Area = structure(c(1L, 1L, 1L), .Label = c("411", "415", "981", 
"8001", "8002", "8003", "8004", "8005", "8006", "8007", "8008", 
"8009", "8010", "8011", "8012", "8013", "8014", "8015", "8016", 
"8017", "8018", "8019", "8020", "8021", "8022", "8023", "8024", 
"8025", "8026", "8027", "8028", "8029", "8030", "8031", "8034", 
"8035", "8037", "8038", "8039", "8040", "8041", "8042", "8043", 
"8044", "8045", "8046", "8047", "8048", "8049", "8050", "8051", 
"8052", "8053", "8055", "8056", "8057", "8058", "8059", "8060", 
"8061", "8062", "8063", "8064", "8065", "8066", "8067", "8068", 
"8069", "8070", "8071", "8072", "8073", "8074", "8075", "8076", 
"8077"), class = "factor"), Closed_Date = structure(c(18668, 
18933, 18716), class = "Date")), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

我尝试了 3 种方法,但都不起作用。

as.numeric(subs(",", ".", subs$Sold_Pr, fixed = TRUE))

subs$Sold_Pr <- as.numeric(subs$Sold_Pr)

subs$Sold_Pr<-as.numeric(gsub(",", "", subs$Sold_Pr))

【问题讨论】:

【参考方案1】:

一个选项是readr::parse_number:

library(readr)

parse_number(subs$Sold_Pr, locale = locale(decimal_mark = ".", grouping_mark = ","))
#> [1]   6500 173000  60000

【讨论】:

【参考方案2】:

另一种选择:

library(dplyr)
subs %>%
  mutate(Sold_Pr = as.numeric(sub(",", "", Sold_Pr)))
  Sold_Pr
1    6500
2  173000
3   60000

数据:

subs <- data.frame(
  Sold_Pr = c("6,500.00", "173,000.00", "60,000.00")
)

【讨论】:

【参考方案3】:

使用gsub 删除除数字以外的所有内容,强制as.numeric 除以100。

as.numeric(gsub('\\D', '', subs$Sold_Pr)) / 100
# [1]   6500 173000  60000

【讨论】:

以上是关于通过将逗号替换为“。”将字符转换为数字。的主要内容,如果未能解决你的问题,请参考以下文章

JS如何把一个数字数组转换成一个数字。

用逗号将整数转换为字符串数千

如何将空格和逗号分隔的数字字符串转换为 int 列表? [复制]

同时替换多个值 - 为了将字符串转换为数字

python 用pandas DataFrame中的逗号将数字字符串转换为float。

FreeMarker 将带逗号的字符串转换为数字