如何删除 R 中数据框中字符串末尾的一两个单词?
How to remove a word or two at the end of string in a dataframe in R?
我有一个数据框,其中有一行名为 "Country"。例如,当原产国为美国时,条目将列为 "Louisiana - USA"。我试图去掉最后的“- 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", "")
}
但这也没有用。我觉得我犯了一个明显的错误,但我想不通(也许我需要使用正则表达式?)
您可以试试这些代码:
df$Country <- sub(" - USA","",df$Country)
df
#Or if you want to you use package stringr
df$Country <- str_replace_all(df$Country," - USA","")
df
您想删除字符串末尾的 " USA"
和 " États-Unis"
。所以,你需要
df$Country <- sub("\s+(?:USA|États-Unis)$", "", df$Country)
详情
\s+
- 1 个或多个空白字符
(?:
-(非捕获)分组构造的开始,匹配两个备选方案之一:
USA
- USA
子字符串
|
- 或
États-Unis
- États-Unis
子字符串
)
- 分组结束
$
- 字符串结尾。
我有一个数据框,其中有一行名为 "Country"。例如,当原产国为美国时,条目将列为 "Louisiana - USA"。我试图去掉最后的“- 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", "")
}
但这也没有用。我觉得我犯了一个明显的错误,但我想不通(也许我需要使用正则表达式?)
您可以试试这些代码:
df$Country <- sub(" - USA","",df$Country)
df
#Or if you want to you use package stringr
df$Country <- str_replace_all(df$Country," - USA","")
df
您想删除字符串末尾的 " USA"
和 " États-Unis"
。所以,你需要
df$Country <- sub("\s+(?:USA|États-Unis)$", "", df$Country)
详情
\s+
- 1 个或多个空白字符(?:
-(非捕获)分组构造的开始,匹配两个备选方案之一:USA
-USA
子字符串|
- 或États-Unis
-États-Unis
子字符串
)
- 分组结束$
- 字符串结尾。