2017-10-21 56 views
-1

J'ai donc une trame de données où la sortie est quelque chose le long de cette:Retrait chaîne de l'élément dans le cadre de données

 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 

Je ne sais pas pourquoi l'ensemble de données est comme ça, mais comme vous pouvez le voir, la pat colonne a une valeur, puis la même chaîne que peut être vu dans la colonne animal. Ce que je voudrais est de supprimer la chaîne bunny de la colonne pat pour toutes les entrées bien sûr, de sorte que la valeur est juste de lui-même.

est-il un moyen facile de le faire, en gardant à l'esprit, qu'il existe différentes variations de bunny, à savoir les lettres capitales etc.

+0

'df $ pat = as.numeric (sous ("\\ s [a-zA-Z] + $", "", trimws (df pat $)))' – useR

+1

OU en supposant que la valeur vous cherchez est toujours un nombre initial 'sub (" (\\ d +). * "," \\ 1 ", df $ pat)' – G5W

+0

G5W, vous êtes la solution a travaillé comme un charme. Malheureusement, l'autre suggestion fait tout NA à la place ... Faites une réponse si vous voulez rep :) –

Répondre

0

Cela devrait fonctionner. Étant donné qu'il n'y a pas de jeu de données reproductible, j'ai dû faire quelques manipulations de données pour l'obtenir dans le même format que vous avez posté.

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 ...