2017-10-21 61 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 ...