我的数据集中有一列有25K行,例如MyApp
,但有些数字为25.3 95.4 95.6
我想删除点。在最后一位数之后。
我怎么做 ?
答案 0 :(得分:3)
我们可以使用sub
来匹配点(.
- 是一个元字符,意思是任何字符 - 所以我们要么转义(\\.
)或将它放在一个方括号中来评估为字符串末尾($
)的点字符,并用空格替换,然后将其转换为numeric
as.numeric(sub("[.]$", "", dat$Col))
答案 1 :(得分:2)
作为@ akrun的答案的替代方案,您可以使用str_remove
包中的stringr
。 sub
允许您将一个字符串替换为另一个字符串;为了删除字符串,请将其替换为空字符串(即""
)。 str_remove
提供了一种快捷方式,可以自动处理替换为空字符串的事实。
代表\\.$
删除字符串末尾的一个点(在用双反斜杠转义之后)。
x <- c("25.3", "95.4", "95.6", "95.2.", "87.5.")
as.numeric(stringr::str_remove(x, "\\.$"))
#> [1] 25.3 95.4 95.6 95.2 87.5
答案 2 :(得分:0)
有很多方法可以做到这一点;一种是通过反向引用:
sub("(.*?)\\.$", "\\1", string)
[1] "25.3" "95.4" "95.6" "95.2" "87.5"
在这里,您将最后一个 .
之前的所有内容都放入一个捕获组中,并在 sub
的替换参数中“记住”这一点。
数据:
string <- c("25.3", "95.4", "95.6", "95.2.", "87.5.")