gpt4 book ai didi

r - 使用 str_detect 提取字符串的值

转载 作者:行者123 更新时间:2023-12-03 20:25:28 24 4
gpt4 key购买 nike

我目前有一个具有以下结构的 data.frame (X):

Number Observation
1 34
2 Example
3 Example34%
4 Example
5 34

我想要的输出是 2 个数据帧,一个只包含双重观察(即 34),一个包含其他所有内容(带有数字和 % 的字符和字符)。

我已经能够使用以下方法获得数量观察:
y <- x[str_detect(x$Observation,("([0-9])")),]

但它也包括对字符和数字的观察。当我否定它 !str_detect(...) 时,我只得到一个字符输出,而忽略了 Example34%。有没有办法只检测数字值,然后用 !that 获取其他所有内容?

所需输出的示例:
enter image description here

最佳答案

开始时使用 anchor ^并结束 $正则表达式

library(tidyverse)

data_example <- tibble::tribble(
~Number, ~Observation,
1L, "34",
2L, "Example",
3L, "Example34%",
4L, "Example",
5L, "34"
)

tidy_solution <- data_example %>%
mutate(
just_numbers = Observation %>% str_extract("^[:digit:]+$"),
just_not_numbers = if_else(just_numbers %>% is.na(), Observation, NA_character_),
full_ans = coalesce(just_numbers, just_not_numbers)
)

tidy_solution
#> # A tibble: 5 x 5
#> Number Observation just_numbers just_not_numbers full_ans
#> <int> <chr> <chr> <chr> <chr>
#> 1 1 34 34 <NA> 34
#> 2 2 Example <NA> Example Example
#> 3 3 Example34% <NA> Example34% Example34%
#> 4 4 Example <NA> Example Example
#> 5 5 34 34 <NA> 34

a <- tidy_solution %>%
select(Number, just_numbers) %>%
na.omit()

a
#> # A tibble: 2 x 2
#> Number just_numbers
#> <int> <chr>
#> 1 1 34
#> 2 5 34


b <- tidy_solution %>%
select(Number, just_not_numbers) %>%
na.omit()

创建于 2020-06-10 由 reprex package (v0.3.0)

关于r - 使用 str_detect 提取字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62295154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com