R - Split String с условиями - PullRequest
       4

R - Split String с условиями

1 голос
/ 30 октября 2019

У меня проблема с разделением строк. У меня огромное количество файлов, имена которых имеют такую ​​структуру:

filenames = c("NO2_Place1_123_456789.dat", "NO2_Nice_Place_123_456789.dat", "NO2_Nice_Place_123_456789.dat", "NO2_Place2_123_456789.dat")

Мне нужно извлечь названия станций, например Place1, Nice_Place1 и так далее. Это либо «Место» и число, либо «Nice_Place» и число.

Я пытался получить имена станций для «Места» и числа, и это работает geat, но это не дает мне правильное имя в случае «Nice_Place» ... потому что он обрабатывает его как 2 слова.

Station = strsplit(filenames[1], "_")[[1]][2] #Works
Station = strsplit(filenames[2], "_")[[1]][2] #Doesnt work

Моя идея теперь использовать if ... else. Поэтому, если в приведенном выше примере Station Station имеет значение «Nice», добавьте 3-ю часть строкового разбиения с подчеркиванием. К сожалению, я совершенно новичок в этом, если еще условие.

Может кто-нибудь, пожалуйста, помочь?

РЕДАКТИРОВАТЬ:

Ожидаемый результат:

Station = strsplit(filenames[1], "_")[[1]][2] #Station = Place
Station = strsplit(filenames[2], "_")[[1]][2] #Station = Nice -- not correct I want to have "Nice_Place"

Так когдаЯ получаю

Station = strsplit(filenames[2], "_")[[1]][2] #Station = Nice

Я хочу добавить условие, что если Station "Хорошее", оно должно добавить strsplit(filenames[2], "_")[[1]][3] с подчеркиванием!

EDIT2:

Iнашел теперь способ получить то, что я хочу:

filenames = c("NO2_Place1_123_456789.dat", "NO2_Nice_Place1_123_456789.dat", "NO2_Nice_Place2_123_456789.dat", "NO2_Place2_123_456789.dat")

Station = strsplit(filenames[2], "_")[[1]][2]

if (Station == "Nice"){

  Station = paste(Station, strsplit(filenames[2], "_")[[1]][3], sep = "_")
}

1 Ответ

1 голос
/ 30 октября 2019

Мы можем использовать sub

sub("^[^_]+_(.*Place\\d*).*", "\\1", filenames[2])
#[1] "Nice_Place1"  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...