从数据框中的元素中删除字符串

时间:2017-10-21 14:39:36

标签: r dataframe

所以我有一个数据框,其输出是这样的:

     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字符串,这样该值就是它自己。

有没有一种简单的方法可以做到这一点,同时请记住,bunny有不同的变体,即大写字母等。

1 个答案:

答案 0 :(得分:0)

这应该有效。鉴于没有可重现的数据集,我不得不进行一些数据操作,以便以相同的格式获取它。

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