как извлечь номер (X> = 0) - PullRequest
       0

как извлечь номер (X> = 0)

1 голос
/ 13 февраля 2020

У меня есть вопрос. Я хотел бы получить фрейм данных типа df2, но следующий код destring не работает .....

library(taRifx)

df$id<-destring(df$id, keep = "0-9")

Этот код дает мне 1234,2838, 34561,34571, 3456

df<-data.frame(id=c("X1234","D2838","3456.1","F3457.1","3456"))
class(df$id)

df2<-data.frame(id=c("1234","2838","3456","3457","3456"))

df$id<-destring(df$id, keep = "0-9")

Ответы [ 3 ]

2 голосов
/ 13 февраля 2020

Можно попробовать sub,

sub('[A-Za-z]?([0-9]+)\\.?.*', '\\1', df$id)
#[1] "1234" "2838" "3456" "3457" "3456"
1 голос
/ 13 февраля 2020

Если я понимаю ваш вопрос - главная проблема в том, что вы хотите сбросить десятичные знаки. Если это так, то сохраните значения по умолчанию keep= и используйте функцию типа round(), floor() или as.integer().

df$id<-as.integer(destring(df$id, keep = "0-9.-"))

https://cran.r-project.org/web/packages/taRifx/taRifx.pdf

0 голосов
/ 13 февраля 2020

Не уверен, что это для вашей цели, но стоит попробовать

gsub(".*?(\\d+)","\\1",df$id)

такой, что

> gsub(".*?(\\d+)","\\1",df$id)
[1] "1234"  "2838"  "34561" "34571" "3456"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...