Skip to content

[R-es] Encontrar un dato y añadirlo a otra columna

5 messages · Samura ., Juan Carlos Lopez Mesa, Marcelino de la Cruz Rot

#
Buenas,
A ver si alguien sabe como hacer lo siguiente:

Tengo un df con letras y numeros, quiero que si me detecta un numero en concreto me a?ada dicho numero en otra columna.

Algo asi

df<-data.frame(c("AV 23","PEPE 34","QWE","AV 24","WERRR ER34","AV 25"))
colnames(df)<-c("nombre1")

df[grepl("AV 23",df$nombre1), "Nombre1_numero"]= "23"
df[grepl("AV 24",df$nombre1), "Nombre1_numero"]= "24"
df[grepl("AV 25",df$nombre1), "Nombre1_numero"]= "25"
df


nombre1              Nombre1_numero
AV 23                             23
PEPE 34                        NA
QWE                              NA
AV 24                              24
WERRR ER34               NA
AV 25                             25

osea, busca AV 23, 24, 25 en la columna, si lo encuentras pon el numero en otra columna, el resto de datos NA

como son muchos, para no repetir siempre lo mismo habia pensado en algo asi


df[grepl("AV \\d{2}",df$nombre1), "Nombre1_numero"]= "\\d{2}"

pero no se como poner ese "\\d{2}" ultimo para que me coloque el numero.

?Alguna idea?
#
Hola,

prueba con esto

df %>% mutate(var = parse_number(nombre1))


Saludos

El mar., 22 sept. 2020 a las 15:46, Samura . (<tontito82 en hotmail.com>)
escribió:

  
    
#
Con parse_number sacaria todos los numeros de la columna,
pero lo que busco es sacar solo los que empiezan por AV y descartar el resto.

De todas maneras muchas gracias, le voy a dar otra vuelta.
#
Hola:
Para este ejemplo concreto, es bastante sencillo. Por ejemplo:

sp <-strsplit(df$nombre1, " ")
df$Nombre1_numero<-sapply(sp, function(x) ifelse(x[1]=="AV", 
as.numeric(x[2]), NA))

Saludos,
Marcelino

El 23/09/2020 a las 2:14, Samura . escribió:

  
    
#
perfecto, pero en realidad habia simplificado el ejemplo
ya que no siempre se encuentra en la misma posicion
(y a veces es AV en mayuscula, otra en minuscula, otra entre parentesis etc..)

pero con sacarlo siguiendo este formato me vale, luego lo adapto a cada circunstancia

nombre1

AV 23
PEPE 34
QWE
 ssss 45 pepe qqqq AV 24
WERRR ER34
qqqqq AV 25 qqqq qqqq