【问题标题】:extract string before dash in R在R中的破折号之前提取字符串
【发布时间】:2018-06-21 18:46:43
【问题描述】:

我有一列名称,格式混合了 AAA 和 AAA-D。我想在破折号之前提取名称(如果它有破折号)或保留非破折号名称。 列表是

Name
W1-D1
Empty
W2-D1

我要提取的是

Name
W1
Empty
W2

我找到了几个语法,比如v1<-gsub("^(.*?)-.*", "\\1",v),但这在我的列表中不起作用,我在 v1 中得到了这个“c(\"W1”。我使用这个语法错了吗?

【问题讨论】:

  • 可以在mutate(dplyr)中使用strsplit(Name, "-")[[1]]来申请整列。

标签: r string extract


【解决方案1】:

下面的正则表达式会做到这一点。

sub("(^[^-]+)-.*", "\\1", Name)
#[1] "W1"    "Empty" "W2" 

数据。

Name <- scan(what = character(), text ="
W1-D1
Empty
W2-D1
")

【讨论】:

  • 我认为我的主要问题是正确转换数据帧。现在所有语法都有效。谢谢。
【解决方案2】:

你也可以使用stringr

library(stringr)

v2<-str_extract(v, "[^-]+")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多