Подстрока первых двух, если не начинать с ZZ - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу подстроку строки, чтобы получить местоположение. Я знаю функции substr или strsplit, но мне нужно разделить с условием. В основном это всегда первые две буквы, но если он начинается с ZZ, то это 2-ые две буквы

Так, например:

Location  Expected_from_string_split
HJ 848    HJ
BP 231    BP
ZA 123    ZA
ZZ AB 123 AB

Я попытался заменить ZZ на "", поэтому я все еще можно разбить строку на первые две буквы, но с помощью замены вы заменяете все значение. Так что это не сработало

Ответы [ 4 ]

1 голос
/ 10 апреля 2020

Один из вариантов будет:

substr(sub('ZZ ', '', df$Location), 1, 2)

Вывод:

[1] "HJ" "BP" "ZA" "AB"
0 голосов
/ 10 апреля 2020

Мы можем использовать trimws из base R

trimws(df$Location, whitespace = 'ZZ\\s*')
#[1] "HJ" "BP" "ZA" "AB"

данные

df <- data.frame(Location = c("HJ", "BP", "ZA", "ZZ AB"))
0 голосов
/ 10 апреля 2020

Если вы не уверены в пробеле между ZZ и кодом, для всех различных случаев можно использовать следующее

address <- c("AP 12","RA 21","ZZLA 23","KS 12","ZZ  LL 12")
mod.address<-gsub("[Z][Z]\\s{0,}","",address)
state <- substr(mod.address,1,2)
print(state)
# OUTPUT
# [1] "AP" "RA" "LA" "KS" "LL"
0 голосов
/ 10 апреля 2020

Попробуйте:

df$Location_new <- gsub("^ZZ ", "", df$Location)

Вывод:

df
  Location Location_new
1       HJ           HJ
2       BP           BP
3       ZA           ZA
4    ZZ AB           AB

Данные:

df <- data.frame(
  Location = c("HJ", "BP", "ZA", "ZZ AB"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...