【问题标题】:R: Extracting After First SpaceR:在第一个空格之后提取
【发布时间】:2022-07-07 22:17:12
【问题描述】:

我正在使用 R 编程语言。我在这里发现了这个问题,它从第一个空格的右侧提取了所有内容:

#https://stackoverflow.com/questions/15895050/using-gsub-to-extract-character-string-before-white-space-in-r

dob <- c("9/9/43 12:00 AM/PM", "9/17/88 12:00 AM/PM", "11/21/48 12:00 AM/PM")

gsub( " .*$", "", dob )
# [1] "9/9/43"   "9/17/88"  "11/21/48"

是否可以修改此代码以在第一个空格之后提取?

# option 1

12:00 AM/PM, 12:00 AM/PM, 12:00 AM/PM

# option 2 : part 1

 12:00, 12:00 ,  12:00 

# option 2: part 2

AM/PM, AM/PM, AM/PM

# then, concatenate option 2 : part 1 and option 2 : part 2

我认为也许切换“gsub”命令的语法可能会完成此操作:

 gsub( "$*. ", "", dob )
 gsub( "*$. ", "", dob )

但我不认为我这样做是正确的。

谁能告诉我怎么做(选项 1 和 [选项 2 第 1 部分,选项 2 第 2 部分])?

谢谢!

注意:通常,我使用 Microsoft Excel 中的“文本到列”来执行此操作 - 但我想了解如何在 R 中执行此操作!

【问题讨论】:

    标签: r string


    【解决方案1】:

    你的意思是以下吗?

    dob <- c("9/9/43 12:00 AM/PM", "9/17/88 12:00 AM/PM", "11/21/48 12:00 AM/PM", "red1 23 g")
    
    gsub("^\\S+ ", "", dob)
    
    #> [1] "12:00 AM/PM" "12:00 AM/PM" "12:00 AM/PM" "23 g"
    

    【讨论】:

    • @PaulS:非常感谢!您的代码可以用于非常通用的字符串吗?例如 c("red1 23 g") ... 我想返回 "23 g"。无论您在哪里看到第一个空格,我都想要第一个空格之后的所有内容。您的代码可以做到这一点吗?谢谢!
    • 是的:请查看我更新的解决方案。 @sindri_baldur 也很完美!
    【解决方案2】:

    选项 1:删除第一个空格及其之前的所有内容?

    sub(".*? ", "", dob)
    # "12:00 AM/PM" "12:00 AM/PM" "12:00 AM/PM"
    

    选项 2:删除最后一个空格及其之前的所有内容?

    sub(".* ", "", dob)
    # [1] "AM/PM" "AM/PM" "AM/PM"
    

    选项 3:删除第一个/最后一个空格以及它之前/之后的所有内容?

    gsub(" [^ ]+$|^.*? ", "", dob)
    # [1] "12:00" "12:00" "12:00"
    

    【讨论】:

    • @sindri_baldur:非常感谢!
    猜你喜欢
    • 2021-10-15
    • 2018-02-17
    • 2019-08-08
    • 2017-06-12
    • 2014-10-18
    • 2023-04-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多