gpt4 book ai didi

regex - 删除R中的小数

转载 作者:行者123 更新时间:2023-12-05 08:27:36 24 4
gpt4 key购买 nike

我有一些列值如下:

HG.1T.1
HG.1T
HG.1T.2
HG.1T.3
HG.1T.5
HG.1T.11

我想删除小数点后第二位的所有内容并试过

 result<-sapply(strsplit(rownames(trial),"\\."),function(x),paste0,head(x,-1),collapse="."))

最后是

HG.1T
HG
HG.1T
HG.1T
HG.1T
HG.1T

它工作正常,除了第二个值,因为只有一个十进制值,它删除了它。我希望它仅在两位小数的情况下起作用,并让一位小数保持原样。我怎么做?应该是

HG.1T
HG.1T
HG.1T
HG.1T
HG.1T
HG.1T

最佳答案

我们可以通过匹配 . 后跟一个或多个数字字符 (\\d+) 直到结束 ( >$) 并替换为 ''.

sub("\\.\\d+$", "", df1$Col)
#[1] "HG.1T" "HG.1T" "HG.1T" "HG.1T" "HG.1T" "HG.1T"

或者我们捕获一个或多个非点字符 ([^.]+) 后跟一个 . 后跟一个或多个非点字符 ( [^.]+) 作为一个组并替换为反向引用 (\\1)。

sub("(^[^.]+[.][^.]+).*", "\\1", df1$Col)
#[1] "HG.1T" "HG.1T" "HG.1T" "HG.1T" "HG.1T" "HG.1T"

数据

df1 <- structure(list(Col = c("HG.1T.1", "HG.1T", "HG.1T.2", "HG.1T.3", 
"HG.1T.5", "HG.1T.11")), .Names = "Col", class = "data.frame",
row.names = c(NA, -6L))

关于regex - 删除R中的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719061/

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