2016-04-22 5 views
0

Функция substr() в R может изолировать любой символ по положению, например.r - удалить последний, но один символ из каждого поля

substr(df$10,2,3) 

или с помощью nchar(), то можно работать в обратном направлении от конца поля, чтобы выделить символ в таком положении, как и в прошлом, но один с помощью:

substr(df$10,nchar(df$10)-2,nchar(df$10)-1) 

однако я хотел бы знать, как просто удалить last but one character каждого поля для столбца в фрейме данных. Мне трудно это делать. любая помощь была бы замечательной!

+1

Можете ли вы пояснить, что вы подразумеваете под словом «последний, но один»? Вы пытаетесь удалить все, кроме второго и последнего персонажа? – nrussell

+1

Вы можете показать ожидаемый результат? – Sotos

ответ

2

Вы можете использовать регулярное выражение с sub:

x <- c("banana","republic") 
sub(".(.)$","\\1",x) 
[1] "banaa" "republc" 

Что это делает матч двух последних символов в строке, и заменить их только последней, которая захватывается в улавливающей группе.

+1

И немного быстрее: 'sub ("^(. *). (.) $ "," \\ 1 \\ 2 ", x)' –

+0

perfect - спасибо! – brucezepplin