删除具有缺失值的数据框列中的字符串后的所有内容

时间:2014-10-28 15:16:30

标签: regex r string gsub strsplit

我的数据框类似于以下摘录:

Observation Identifier   Value
Obs001      ABC_2001     54
Obs002      ABC_2002     -2
Obs003                   1
Obs004                   1 
Obs005      Def_2001/05  

我想将此数据框转换为数据框,其中" _" 符号后面的部分字符串将被删除:如下图所示:

Observation Identifier_NoTime   Value
Obs001      ABC                 54
Obs002      ABC                 -2
Obs003                          1
Obs004                          1 
Obs005      Def  

我尝试过如此处讨论的strsplitgsubsub,但不能强迫这些表扬。我必须考虑以下事实:

  1. 列缺少值,我想将它们留在原来的位置
  2. String" _"位于变量
  3. 的不同位置
  4. 我还希望保留数据框的其余部分

1 个答案:

答案 0 :(得分:9)

您可以尝试使用以下sub命令从_符号中删除所有非空格字符。

sub("_\\S*", "", string)

<强>解释

  • _匹配文字_符号。
  • \S*匹配零个或多个非空格字符。

这将删除_符号

中的所有字符
sub("_.*", "", string)

<强>解释

  • _匹配文字_符号。
  • .*匹配任何字符零次或多次。