gpt4 book ai didi

r - 仅当 R 中为数字时才提取字符串的最后一个组成部分

转载 作者:行者123 更新时间:2023-12-02 16:28:56 25 4
gpt4 key购买 nike

我有一个包含多个 . 分隔符的数据框。我希望删除最后一次出现 . 之后的字符,但前提是它是数字。因此在下面的示例中,a.b.c 将保持不变,但 a.b.1 将变为两个值:a.b1 .我想我已经很接近了,但无法弄清楚将它拼凑在一起的最后一 block 。

have <- data.frame(x = c("a.b", "a.b.c", "a.b.1", "a.b.2", "9.a.b.c"))

want <- data.frame(x = c("a.b", "a.b.c", "a.b", "a.b", "9.a.b.c"),
y = c(0, 0, 1, 2, 0))

# attempt 1
have %>% mutate(y = sub('.*\\.', '', x))

# attempt 2
have %>% separate(x, c('y', 'z'), sep = '.*\\.', extra = 'merge', remove = FALSE)

最佳答案

这是一个单独的 tidyverse 解决方案

library("tidyr")

have %>%
separate(x, c("x", "y"), "\\.(?=\\d+$)", fill="right") %>%
replace_na(list(y=0))

x y
1 a.b 0
2 a.b.c 0
3 a.b 1
4 a.b 2
5 9.a.b.c 0

关于r - 仅当 R 中为数字时才提取字符串的最后一个组成部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63848531/

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