Извлечение двух цифр перед запятой из числового вектора-столбца

У меня есть смоделированный ценовой ряд, представляющий собой вектор-столбец. Из этого мне нужно извлечь две цифры перед запятой без округления, то есть 87 из цены 1287,85 и 34 из цены 234,13, и сохранить их в еще одном векторе-столбце.

Пример

str1 <- c("1,287.85", "234.13")

Желаемый результат

str2 <- c("87", "34")

person Joakim Lindboe Brüchmann    schedule 30.03.2016    source источник
comment
Добро пожаловать, Йоаким. Посмотрите stackoverflow.com/help/how-to-ask. Поиск и исследование вы делаете Мастера! Хорошо показать, что вы пробовали до сих пор. взгляните на ответы регулярных выражений, например этот или это. т. е. поиск цифр регулярного выражения R...   -  person micstr    schedule 30.03.2016


Ответы (2)


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

library(stringr)
as.numeric(str_extract(str1, "\\d{2}(?=\\.)"))
#[1] 87 34

данные

str1 <- c("1,287.85", "234.13")
person akrun    schedule 30.03.2016
comment
Удивительный метод, который точно удовлетворил мои потребности. Большое спасибо! - person Joakim Lindboe Brüchmann; 30.03.2016
comment
@ акрун. Извинения. Я новичок на этом форуме. Просто чтобы улучшить ваше решение, мне потребовалось довольно много времени, чтобы понять, что NA появляется всякий раз, когда цена по частоте встречаемости достигает целого числа, то есть 198,00, поскольку оно хранится как 198, где нет запятой для поиска. Я решил эту проблему, просто добавив 0,00001 ко всему моему вектору цен, который теперь работает идеально. - person Joakim Lindboe Brüchmann; 07.04.2016

Вы можете сначала использовать as.integer(yournumber) для удаления десятичных частей, а затем использовать операцию по модулю 100:

a = 1287.54

as.integer(a) %% 100

#[1] 87
person Alex    schedule 30.03.2016