2014-10-30 2 views
0

Я использовал приведенный ниже код, чтобы удалить часть «(MV)» из конца каждой строки в векторе (в частности, номер строки 1 для всех столбцов и пропустить столбец 1, как показано в коде) , однако он удаляет все M, V и MV в векторе, даже если он находится в начале строки.Удалить часть строки с помощью gsub

df[1,(-1)]<-gsub("[(MV)]","",df[1,(-1)]) 

Как удалить часть (MV) в конце каждой строки, не затрагивая остальную часть остального?

Вот воспроизводимый пример:

structure(list(X1 = structure(c(NA, 5447), class = "Date"), X2 = c("AVON(MV)", 
"28.34"), X3 = c("BA.(MV)", "750.07"), X4 = c("CMRG(MV)", "10.040000000000001" 
), X5 = c("COB(MV)", "143.22999999999999")), .Names = c("X1", 
"X2", "X3", "X4", "X5"), row.names = c(NA, -2L), class = "data.frame") 
+3

Вы можете использовать аргумент 'fixed' в' gsub', возможно, с '' (MV) '' как ваш шаблон. Пример: 'x <-" MV (MV) "; gsub ("(MV)", "", x, fixed = TRUE) 'Пожалуйста, предоставьте воспроизводимый пример, чтобы мы точно знали, что вы делаете. –

+0

@RichardScriven Я обновил вопрос с помощью воспроизводимого примера – athraa

+0

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

ответ

1

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

Во всяком случае, чтобы удалить (MV) из каждой строки, попробуйте fixed аргумент в gsub, и сделать шаблон "(MV)"

df[1,-1] <- gsub("(MV)", "", df[1,-1], fixed=TRUE) 
df 
#   X1 X2  X3     X4     X5 
# 1  <NA> AVON BA.    CMRG    COB 
# 2 1984-11-30 28.34 750.07 10.040000000000001 143.22999999999999 

Но я думаю, что вам нужно взглянуть на эти данные более точно, потому что это Безразлично Кажется, правильно настроено.

+0

Предполагается, что это заголовки столбцов, но это происходит из файла excel. Я думал, что было бы проще очистить его как строку, чем имена столбцов. – athraa