代码之家  ›  专栏  ›  技术社区  ›  firmo23

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

r
  •  0
  • firmo23  · 技术社区  · 4 年前

    我有下面的数据框,我想打开 Sold_Pr 将列替换为数字 comma 签 .

    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"))
    

    我试过三种方法,但都不管用。

    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))
    
    2 回复  |  直到 4 年前
        1
  •  3
  •   stefan    4 年前

    readr::parse_number :

    library(readr)
    
    parse_number(subs$Sold_Pr, locale = locale(decimal_mark = ".", grouping_mark = ","))
    #> [1]   6500 173000  60000
    
        2
  •  2
  •   Chris Ruehlemann    4 年前

    另一种选择:

    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
  •  2
  •   jay.sf    4 年前

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

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