gpt4 book ai didi

R弦清洁

转载 作者:行者123 更新时间:2023-12-04 10:47:33 26 4
gpt4 key购买 nike

我使用一些非常困惑的字符串,如下所示

 Value
-------------------
25
32.12 . (05-
33.90 ,
46.70 ,
() 26.60
27.2
23.24 . (12-
36.52 ,
27.1814404432133 [
29.73 . (22-
31.8058003525076 [
35.40 ,
38.44 .
46.14 ,
29.26 [
25.44 .

我不知道如何有效地清洁它,使其看起来像这样。

 Value
-------------------
25
32.12
33.90
46.70
26.60
27.2
23.24
36.52
27.1814404432133
29.73
31.8058003525076
35.40
38.44
46.14
29.26
25.44

我尝试使用子函数 sub(".*", '', Value) 来捕获空格之前的所有内容,但这不起作用,因此寻找一些有关如何清理的建议或提示这个字符串。

Value <- c(" 25 \n", "  32.12 .  (05-", "33.90 ,\n", "46.70 ,\n", " () 26.60 ", 
" 27.2 ", " 23.24 . (12-", "36.52 ,\n", " 27.1814404432133\n\n[",
" 29.73 . (22-", " 31.8058003525076\n\n[", "35.40 ,\n", " 38.44 .\n",
"46.14 ,\n", " 29.26\n\n[", " 25.44 .\n")
df <- data.frame(Value)

最佳答案

您可以使用提取第一个数字

Value <- c(" 25 \n", "  32.12 .  (05-", "33.90 ,\n", "46.70 ,\n", " () 26.60 ", 
" 27.2 ", " 23.24 . (12-", "36.52 ,\n", " 27.1814404432133\n\n[",
" 29.73 . (22-", " 31.8058003525076\n\n[", "35.40 ,\n", " 38.44 .\n",
"46.14 ,\n", " 29.26\n\n[", " 25.44 .\n")
df <- data.frame(Value)
df$Value <- sub(".*?(\\d[0-9.]*).*", "\\1", df$Value)

请参阅R demo online

详细信息

  • .*? - 任意 0 个以上字符,尽可能少
  • (\\d[0-9.]*) - 第 1 组捕获任何数字 (\\d),然后捕获 0+ 数字或 符号
  • .* - 直到字符串末尾的任意 0 个以上字符。

sub 函数使用保存捕获到组 1 中的值的 \1 反向引用执行单个替换。

如果您想确保只提取数字 + ( . + digital(s) ) * 模式,您可以使用

df$Value <- sub(".*?(\\d+(?:\\.\\d+)?).*", "\\1", df$Value)

参见this R demo

关于R弦清洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45705428/

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