Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配字符串rstudio_R - Fatal编程技术网

匹配字符串rstudio

匹配字符串rstudio,r,R,我的数据框中有此列 df[column] = 10$ , 20eur, 10eur, 8$...... 我想通过Rstudio获取带有“eur”的数字,并更改为美元。然后此更改将删除$和eur字符串。我试过str_extract,但不起作用 谢谢 根据您的输入: df <- data.frame(column = c("10$", "20eur", "10eur", "8$", "100.5eur&

我的数据框中有此列

df[column] = 10$ , 20eur, 10eur, 8$......
我想通过Rstudio获取带有“eur”的数字,并更改为美元。然后此更改将删除$和eur字符串。我试过str_extract,但不起作用

谢谢

根据您的输入:

df <- data.frame(column = c("10$", "20eur", "10eur", "8$", "100.5eur"))

下面简要说明如何阅读:

"^\\d+(\\.\\d*)?"
这是一种使用正则表达式读取十进制数的方法

  • ^
    表示字符串的开头。这意味着你要寻找的东西是从以下内容开始的
  • \d
    代表数字。您需要使用double
    \\
    来“转义”它,因为
    \
    是一个特殊字符,在大多数规则中您无法单独编写
  • (…)?
    表示括号的内容可能在那里,也可能不在那里
  • \\.
    是小数点
    是正则表达式中的一个特殊字符:它可以代表任何字符。因此,如果你实际上是指
    ,你需要“转义”它[两次,因为
    \
    也是一个特殊字符]
  • \\d+
    表示可能有一个或多个数字,而
    \\d*
    表示可能有零个或多个数字

参见
?子部分
。还要注意,正确的标签应该是
r
,而不是
rstudio
,这与这个问题无关。@Jean-ClaudeArbaut我更改了标签。谢谢由于您使用的是
stringr
,因此可以使用
stru替换(x,'eur','$)
。有关详细信息,请参阅
帮助(str\u replace)
。这类似于
gsub
。是否要以固定比率将欧元转换为美元?还是只提取数字?江户提出的好问题。如果你真的想把欧元兑换成美元,如果我有一个像100.5eur这样的浮动数,你可以使用像
行这样的东西?我不能用它我在哪里可以看到所有的零件?比如“^\\d+\\.?\\d*”,因为我不知道所有的组合,但它非常有用。请检查
?base::regex
是您想要的答案吗?好的!你能给我解释一下你用的那个吗?因为我想了解。非常感谢。
library(dplyr)
df <- df %>% 
 mutate(value = as.numeric(str_extract(column, "^\\d+(\\.\\d*)?")),
        currency = str_remove_all(column, "^\\d+(\\.\\d*)?")) %>% 
 mutate(converted_value = if_else(currency == "eur", value * ratio, value))
"^\\d+(\\.\\d*)?"