Замена (подстрока) определенных символов в столбце df R

#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(), чтобы выяснить, что вы там сделали.