所以我有一个数据框,其输出是这样的:
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
有不同的变体,即大写字母等。
答案 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 ...