gpt4 book ai didi

r - 如何在R中的数据帧中删除字符串末尾的一两个单词?

转载 作者:行者123 更新时间:2023-12-02 02:53:55 26 4
gpt4 key购买 nike

我有一个名为“Country”的行的数据框。例如,当原产国为美国时,条目将列为“路易斯安那州 - 美国”。我试图在最后去掉“-USA”,这样它只会说明它来自哪个州。

所以,我目前有这样的东西(虽然我的有数千个条目):

df <- data.frame(ID = 1:4, Country = c("Louisiana - USA", "Canada","France", "Maine - USA"))

我尝试的是以下内容:
for (i in 1:nrow(df)) {
df$USA[i] <- ifelse(grepl(" USA| États-Unis", df$Country[i]), 1, 0)
}

index_USA <- which(df$USA == 1)

for (int in index_USA) {
gsub(" - USA", "", df$Country[int])
}

但是,此代码不起作用。
我还尝试使用 stringr 包而不是 gsub。因此,我将最后一个 for 循环替换为:
for (int in index_USA) {
str_replace_all(df$Country[int], " - USA", "")
}

但这也不起作用。我觉得我犯了一个明显的错误,但我无法弄清楚(也许我需要使用正则表达式?)

最佳答案

您要删除 " USA"" États-Unis"在字符串的末尾。所以,你需要

df$Country <- sub("\\s+(?:USA|États-Unis)$", "", df$Country)

详情
  • \\s+ - 1 个或多个空白字符
  • (?: -(非捕获)分组构造的开始,匹配两个备选方案之一:
  • USA - USA子串
  • | - 或
  • États-Unis - États-Unis子串
  • ) - 分组结束
  • $ - 字符串的结尾。
  • 关于r - 如何在R中的数据帧中删除字符串末尾的一两个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516037/

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