#r #substring
#r #подстрока
Вопрос:
Здравствуйте, я ищу способ подстроки столбца df.
Plot
1. Ctr-M1
2. Ctr-M2
3. CTR-W3
4. CTR-P-M20
5. M-1
6. W-15
substring_plot должен включать только W или M
Я пробовал что-то вроде этого
df$substring_plot = substr(df$plot,1,5,7)
Что не работает, я также понимаю, почему это не работает. Сначала я подумал, что могу просто сделать это несколько раз, пока у меня не останутся только W и M, но это очень грубо.
У кого-нибудь есть идея, как это сделать?
Комментарии:
1. В следующий раз, когда вы публикуете, пожалуйста, также укажите точный вывод, который вы хотите, чтобы избежать путаницы.
Ответ №1:
Использование sub
:
df$plot_out <- sub("^.*([MW]).*$", "\1", df$plot)
df
plot plot_out
1 Ctr-M1 M
2 Ctr-M2 M
3 CTR-W3 W
4 CTR-P-M20 M
5 M-1 M
6 W-15 W
Данные:
df <- data.frame(plot=c("Ctr-M1", "Ctr-M2", "CTR-W3", "CTR-P-M20", "M-1", "W-15"),
stringsAsFactors=FALSE)
Комментарии:
1. Это сработало почти наполовину. Мне просто нужно M или W, а не W-15 или M1, например. А также по какой-либо причине plot_out по-прежнему показывает CTR-P-M20
2. Если вам действительно нужна просто буква, используйте:
sub("^.*([MW]).*$", "\1", df$plot)
3. Спасибо. Я загляну в sub(), чтобы выяснить, что вы там сделали.