2014-10-28 101 views
2

我有一個數據幀類似於下面所述提取物中的數據幀列的字符串後,取下一切:與缺失值

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

回答

8

您可以嘗試使用下面的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