如果单元格包含 R 中字符串的一部分,如何替换单元格

问题描述 投票:0回答:1

我的列具有从 1 到 5 的不同评级,数字旁边有描述符。格式为“数字破折号描述符”,例如。 “1 - 非常高兴”或“5 - 饥饿”。我想仅用数字替换这些,但是有很多不同的描述符,而且太多,无法手动重新编码。

因为它们都包含破折号,所以我确信一定有一种方法可以做一些事情,比如将包含“1 -”的单元格的所有实例替换为“1”,但我似乎无法做任何简单的工作。

如有任何帮助,我们将不胜感激!

我可以使用 str_contains 查找包含破折号的单元格,但无法使用 dplyr 中的替换来实现这一点。

r replace contains recode
1个回答
0
投票

要从 R 中的文本字符串中提取数字,我将使用

{stringr}
包。

首先,让我们在一个简单的数据框中重现您的数据:

library(dplyr)

data <- tibble("values" = c("1 - very happy", "5 - hungry", "3 - average"))

我们可以使用

str_extract
包中的
{stringr}
从字符串中提取第一个字符,对字符串 (
.
) 开头的任何字符 (
^
) 使用正则表达式语法:

install.packages("stringr")
library(stringr)
data |> 
  mutate(numbers = stringr::str_extract(values, "^."))

或者,我们可以对

\\d+
中的任意数字(
str_extract
)使用正则表达式,只从字符串中提取数字,无论它们位于字符串的哪个部分:

data |> 
  mutate(numbers = stringr::str_extract(values, "\\d+"))

最后,其他软件包(例如

{readr}
)具有帮助完成此类数据清理任务的功能:

data |> 
  mutate(numbers = readr::parse_number(values))
© www.soinside.com 2019 - 2024. All rights reserved.