【问题标题】:Identify and strip characters from colums识别并去除列中的字符
【发布时间】:2021-09-06 20:28:12
【问题描述】:

我有一个大型数据集,我想在其中识别和删除字符和符号以仅保留数字值。

例如,我希望 -£1125.91m 成为 -1125.91

dataset
  Event                       var1       var2  
  <fct>                       <chr>      <chr> 
1 Labour Costs YoY            13.34m     0.026 
2 Unemployment Change (000's) $16.91b    -0.449
3 Unemployment Rate           -£1125.91m 0.89k 
4 Jobseekers Net Change       ¥1012.74b  9.56m

目前我知道如何从列中删除单个字符。像这样:

dataset$`var1` <- gsub("k", "", dataset$`var`)

手动执行此操作将需要大量工作,因为数据集非常大。我想知道您是否可以同时识别和删除所有字符,货币符号以及 m 和 b 也可以?

复制数据集:

dataset <- structure(list(Event = structure(2:5, .Label = c("Event", "Labour Costs YoY", 
                                                    "Unemployment Change (000's)", "Unemployment Rate", "Jobseekers Net Change"), 
                                    .Names = c("", "", "", ""), class = "factor"), var1 = c("13.34m", "$16.91b", "-£1125.91m", "¥1012.74b"), var2 = c(0.026, -0.449, "0.89k", "9.56m")), row.names = c(NA, 
                                                                                                                                                                                                                 -4L), class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

    标签: r character symbols gsub


    【解决方案1】:

    要删除除连字符、数字或点之外的所有内容,您可以使用

    dataset$var1 <- gsub("[^-0-9.]", "", dataset$var1)
    

    [^-0-9.] 模式是一个否定字符类,它匹配除该类中定义的字符之外的任何字符。

    请参阅regex demo online

    an online R demo:

    dataset <- structure(list(Event = structure(2:5, .Label = c("Event", "Labour Costs YoY", 
        "Unemployment Change (000's)", "Unemployment Rate", "Jobseekers Net Change"), 
       .Names = c("", "", "", ""), class = "factor"), var1 = c("13.34m", "$16.91b", "-£1125.91m", "¥1012.74b"), var2 = c(0.026, -0.449, "0.89k", "9.56m")), row.names = c(NA, 
       -4L), class = c("tbl_df", "tbl", "data.frame"))
    gsub("[^-0-9.,]", "", dataset$var1)
    ##  => [1] "13.34"    "16.91"    "-1125.91" "1012.74" 
    

    【讨论】:

    • 谢谢,这成功了!您是否还知道是否有办法将删除的值存储在不同的列变量中?以防我以后需要它,以确定某物是一百万还是十亿。
    猜你喜欢
    • 2013-06-07
    • 2013-04-14
    • 2020-10-25
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2018-02-07
    相关资源
    最近更新 更多