与缺失值

问题描述:

我有一个数据帧类似于下面所述提取物中的数据帧列的字符串后,取下一切:与缺失值

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. 字符串“_”坐落在不同的地方在变量
  3. 我也想将数据帧的其余部分保留为
+2

你试过'sub(“_ \\ S +”,“”,string,perl = T)'? – 2014-10-28 15:18:33

+0

谢谢,它像一个魅力。你愿意详细说明吗? – Konrad 2014-10-28 15:20:15

+0

然后我把它作为答案。 – 2014-10-28 15:23:18

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

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

说明:

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

OR

这从_符号删除所有的字符,

sub("_.*", "", string) 

说明:

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

为什么不是'sub(“_。+”,“”,string,perl = T)'? – Cath 2014-10-28 15:27:08

+1

为什么不'sub(“_。*”,“”,string,perl = T)':-)? – 2014-10-28 15:28:21

+0

对!所以,为什么不呢? ;-) – Cath 2014-10-28 15:29:16