Как заменить часть строки в кадре данных в R? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть датафрейм со строкой под названием «Страна».Когда страной происхождения являются Соединенные Штаты, записи указываются, например, как «Луизиана - США».В конце я пытаюсь избавиться от "- США", чтобы он только говорил, из какого штата он пришел.

Итак, у меня сейчас что-то подобное (хотя у меня тысячи записей):

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", "")
}

Но это тоже не сработало.Я чувствую, что совершаю очевидную ошибку, но не могу понять (возможно, мне нужно использовать регулярное выражение?)

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы хотите удалить " USA" и " États-Unis" в конце строки.Итак, вам нужно

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

Подробности

  • \\s+ - 1 или более пробельных символов
  • (?: - начало(не захватывающая) группирующая конструкция, соответствующая любой из двух альтернатив:
    • USA - USA подстрока
    • | - или
    • États-Unis- États-Unis подстрока
  • ) - конец группировки
  • $ - конец строки.
0 голосов
/ 24 мая 2018

Вы можете попробовать эти коды:

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
...