2017-10-21 60 views
-1

所以我有一個數據幀中的輸出是沿着這樣的:從元數據幀刪除串

 VALUE  pat   animal model 
    <dbl>  <chr>  <chr>  <chr> 
1 0.0000000 14 bunny bunny  semi 
2 0.0000021 911 Bunny Bunny  semi 
3 0.0000093 922 BUNNY BUNNY  semi 
4 0.0000118 629 Bunny Bunny  semi 
5 0.0000203 807 Bunny Bunny  semi 
6 0.0000245 263 Bunny Bunny  semi 
7 0.0001229 1015 BUNNY BUNNY  semi 
8 0.4401012 401 bunny bunny  semi 
9 0.5979202 568 bunny bunny  semi 

我不知道爲什麼數據集是這樣的,但你可以看到, pat列有一個值,然後是相同的字符串,可以在animal列中看到。 我想要的是從pat列刪除bunny字符串的所有條目,當然,這樣值就是它自己。

是否有一個簡單的方法來做到這一點,也記住,有即大寫字母等

+0

'DF $輕拍= as.numeric(子( 「\\ S [A-ZA-Z] + $」, 「」,trimws(DF $ PAT)))' – useR

+1

OR假設值你正在尋找始終是一個初始數字'sub(「(\\ d +)。*」,「\\ 1」,df $ pat)' – G5W

+0

G5W,你的解決方案就像一個魅力。不幸的是,另一個建議使得一切都NA而不是...做一個回答,如果你想rep :) –

回答

0

這應該工作的bunny不同的變化。鑑於沒有可重現的數據集,我不得不做一些數據處理來獲取它與您發佈的相同格式的數據。

require(stringr) 

k <- read.table(text = "VALUE  pat   animal model 
    1 0.0000000 14_bunny bunny  semi 
2 0.0000021 911_Bunny Bunny  semi 
3 0.0000093 922_BUNNY BUNNY  semi 
4 0.0000118 629_Bunny Bunny  semi 
5 0.0000203 807_Bunny Bunny  semi 
6 0.0000245 263_Bunny Bunny  semi 
7 0.0001229 1015_BUNNY BUNNY  semi 
8 0.4401012 401_bunny bunny  semi 
9 0.5979202 568_bunny bunny  semi") 

k$pat <- stringr::str_replace(k$pat,"_", " ") 
k$nums <- str_extract(k$pat,"\\d+") 
k$nums_format <- as.numeric(k$nums) 

k 
     VALUE  pat animal model nums nums_format 
1 0.0000000 14 bunny bunny semi 14   14 
2 0.0000021 911 Bunny Bunny semi 911   911 
3 0.0000093 922 BUNNY BUNNY semi 922   922 
4 0.0000118 629 Bunny Bunny semi 629   629 
5 0.0000203 807 Bunny Bunny semi 807   807 
6 0.0000245 263 Bunny Bunny semi 263   263 
7 0.0001229 1015 BUNNY BUNNY semi 1015  1015 
8 0.4401012 401 bunny bunny semi 401   401 
9 0.5979202 568 bunny bunny semi 568   568 

str(k) 
'data.frame': 9 obs. of 6 variables: 
$ VALUE  : num 0.00 2.10e-06 9.30e-06 1.18e-05 2.03e-05 ... 
$ pat  : chr "14 bunny" "911 Bunny" "922 BUNNY" "629 Bunny" ... 
$ animal  : Factor w/ 3 levels "bunny","Bunny",..: 1 2 3 2 2 2 3 1 1 
$ model  : Factor w/ 1 level "semi": 1 1 1 1 1 1 1 1 1 
$ nums  : chr "14" "911" "922" "629" ... 
$ nums_format: num 14 911 922 629 807 ...