Pregunta R: ¿Solo mantiene los 3 (x) primeros caracteres en todas las filas de una columna?


He importado unos pocos miles de archivos xls en un data.frame y agregué una columna con el nombre del archivo.

Así tengo los datos.

data1  data2  data3  filname
A      A2     A3     301fg.xls
B      B2     B3     302gfg.xls
C      C2     C3     303gfsddf.xls
.,.,.,.

Quiero cambiar el nombre de los nombres en la columna de nombre de archivo para que solo contenga los 3 primeros caracteres / dígitos, dando así:

data1  data2  data3  filname
A      A2     A3     301
B      B2     B3     302
C      C2     C3     303
.,.,.,.

5
2018-02-10 11:02


origen


Respuestas:


df$filname <- sub("^(\\d{3}).*$", "\\1", df$filname)

o

df$filname <- substr(df$filname, 0, 3)

16
2018-02-10 11:06



@lukeA ha publicado la respuesta más lógica a esto, pero tú podría también use read.fwf:

> read.fwf(textConnection(mydf$filname), 3)
   V1
1 301
2 302
3 303

Dependiendo de str de sus datos, podría necesitar ser read.fwf(textConnection(as.character(mydf$filname)), 3) Si mydf$filename es un factor variable.


0
2018-02-10 11:17