[R-es] Abreviar nombres ciéntificos

Marcelino de la Cruz marcelino.delacruz en upm.es
Mie Ene 14 15:25:32 CET 2015


No veo bien la estructura de tu columna o fila de nombre pero a ver si 
esto te inspira:

 >  library(stringr)
 >
 > cosa <- c("Gadiculus argenteus", "Gaidropsarus macrophthalmus")
 > cosa2 <- str_split(cosa," ")
 > cosa3 <- lapply(cosa2, function(x) str_sub(x, 0,c(1,100)))
 >
 > sapply(cosa3, function(x) paste(x, collapse="."))
[1] "G.argenteus"      "G.macrophthalmus"




Saludos,

Marcelino



El 14/01/2015 a las 15:03, JC Arronte escribió:
>
>
> Hola a todos,
>
> Gracias por las respuestas.
>
> Los nombres ci�ntificos son los nombres de las columnas de un csv. Usando vuestros comentarios y sugerencias, estoy tratando de "automatizarlo", ya que tengo unas 40 especies.
>
> De momento sin mucho �xito por que no consigo dar con la forma de que me abrevie las especies correctamente y mezclo campos
>
> La aproximaci�n de Jorge me valdr�a (y he estado us�ndola c�mo idea), pero al ser bastantes especies, c�mo he dicho antes me gustar�a usar una funci�n o un bucle.
>
> Respondiendo a Javier, mi csv tiene �ste aspecto
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>    Gadiculus argenteus
>    Gaidropsarus macrophthalmus
>
>
>
>
>
>    Malacocephalus laevis
>
>    Merluccius merluccius
>    Micromesistius poutassou
>
>
>
>
>
>
>
>
>
>
>
>
>    100P_23
>
>
>
>
>    5485.2
>    0
>
>
>
>
>
>    0
>
>    67937.4
>    21236.2
>
>
>
>
>
>
>
>
>
>
>
>
>    123P_110
>
>
>
>
>    161434.5
>    2456.1
>
>
>
>
>
>    0
>
>    825001.7
>    456647.8
>
>
>
>
>
>
>
>
>
>
>
>
>    135P-1840
>
>
>
>
>    612275
>    19306
>
>
>
>
>
>    38
>
>    1699749.9
>    1333721.6
>
>
>
>
>
>
>
>
>
>
>
>
>    185P-2342
>
>
>
>
>    315022.9
>    3845.6
>
>
>
>
>
>    1161.2
>
>    490340.9
>    550261.6
>
>
>
>
>
>
>
>
>
>
>
>
>    235P-1284
>
>
>
>
>    306261.2
>    11083.2
>
>
>
>
>
>    9997.7
>
>    178061.2
>    439126.9
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Cualquier ayuda ser� muy bien recibida.
>
> Un saludo y gracias
>
> Juan Carlos
>
>> ------------------------------
>>
>> Message: 2
>> Date: Mon, 12 Jan 2015 22:34:51 +0100
>> From: JC Arronte <j_arronte en hotmail.com>
>> To: "r-help-es en r-project.org" <r-help-es en r-project.org>
>> Subject: [R-es] Abreviar nombres ci�ntificos
>> Message-ID: <DUB131-W126277B43EB70599508B228B430 en phx.gbl>
>> Content-Type: text/plain; charset="UTF-8"
>>
>> Hola a tod en s,
>>
>> Estoy tratando de abreviar nombres ci?ificos pero no me gusta c?queda usando make.cepnames de la librer?vegan.
>>
>> Me gustar?poderlos abreviar as?Hymenocephalus italicus --> H.italicus
>> Merluccius merluccius --> M.merluccius
>>
>> He probado con varias opciones y no consigo dar con ello. Estoy casi seguro de que es algo relativamente sencillo, pero no doy con ello.
>>
>> ?Alguien podr?echarme una mano?.
>>
>> Un saludo y gracias
>>
>> Juan Carlos
>>
>>
>>   		 	   		
>> 	[[alternative HTML version deleted]]
>>
>>
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Mon, 12 Jan 2015 20:09:06 -0300
>> From: "Marcuzzi, Javier Rub�n" 	<javier.ruben.marcuzzi en gmail.com>
>> To: r-help-es en r-project.org
>> Subject: Re: [R-es] Abreviar nombres ci�ntificos
>> Message-ID: <54B45412.6040500 en gmail.com>
>> Content-Type: text/plain; charset="UTF-8"
>>
>> Estimado Juan Carlos
>>
>> Nuca use make.cepnames, pero creo que el problema o soluci�n depende de
>> como tenga los datos, pienso en lo siguiente, el nombre es una cadena,
>> busca la separaci�n (espacio en blanco), a partir de este toma las dos
>> palabras en forma separadas, a al primera le toma el primer caracter,
>> luego concatena esta con la segunda agregando el punto. Claro, escrito
>> as� es f�cil, pero depende de como se puedan obtener los datos, o de
>> como est�n guardados.
>>
>> Por el contrario, si est�n en una base de datos donde se emplean dos
>> campos, el planteo es sencillo con una consulta sql.
>>
>> Creo que tendr�a que enviar un listado de cinco nombres de la forma en
>> que los tiene en su computadora para que podamos replicar el problema y
>> aportar un c�digo que de fuese �til.
>>
>> Javier Marcuzzi
>>
>>
>> El 12/01/2015 a las 06:34 p.m., JC Arronte escibi�:
>>> Hola a tod en s,
>>>
>>> Estoy tratando de abreviar nombres ci?ntificos pero no me gusta c?mo queda usando make.cepnames de la librer?a vegan.
>>>
>>> Me gustar?a poderlos abreviar as?,
>>> Hymenocephalus italicus --> H.italicus
>>> Merluccius merluccius --> M.merluccius
>>>
>>> He probado con varias opciones y no consigo dar con ello. Estoy casi seguro de que es algo relativamente sencillo, pero no doy con ello.
>>>
>>> ?Alguien podr?a echarme una mano?.
>>>
>>> Un saludo y gracias
>>>
>>> Juan Carlos
>>>
>>>
>>>    		 	   		
>>> 	[[alternative HTML version deleted]]
>>>
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>> 	[[alternative HTML version deleted]]
>>
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Tue, 13 Jan 2015 10:29:18 +1100
>> From: Jorge I Velez <jorgeivanvelez en gmail.com>
>> To: JC Arronte <j_arronte en hotmail.com>
>> Cc: "r-help-es en r-project.org" <r-help-es en r-project.org>
>> Subject: Re: [R-es] Abreviar nombres ci�ntificos
>> Message-ID:
>> 	<CAKL8G3Hyw5uA7z_aasmU317JkAiYFyaj8xQuBvidf9RLptCu2w en mail.gmail.com>
>> Content-Type: text/plain; charset="UTF-8"
>>
>> Hola Juan Carlos,
>>
>> Quizas lo siguiente pueda serte util:
>>
>> # test
>> R> s <- "Merluccius merluccius"
>> R> strsplit(s, " ")
>> [[1]]
>> [1] "Merluccius" "merluccius"
>> R> strsplit(s, " ")[[1]]
>> [1] "Merluccius" "merluccius"
>> R> s <- strsplit(s, " ")[[1]]
>> R> paste0(substr(s[1], 1, 1), ".", s[2])
>> [1] "M.merluccius"
>>
>> # funcion
>> convertir <- function(s){
>> s <- strsplit(s, " ")[[1]]
>> paste0(substr(s[1], 1, 1), ".", s[2])
>> }
>> convertir <- Vectorize(convertir)
>>
>> s <- c("Merluccius merluccius", "Hymenocephalus italicus")
>> convertir(s)
>> #  Merluccius merluccius Hymenocephalus italicus
>> #         "M.merluccius"            "H.italicus"
>>
>> Saludos,
>> Jorge.-
>>
>>
>> 2015-01-13 8:34 GMT+11:00 JC Arronte <j_arronte en hotmail.com>:
>>
>>> Hola a tod en s,
>>>
>>> Estoy tratando de abreviar nombres ci?ificos pero no me gusta c?queda
>>> usando make.cepnames de la librer?vegan.
>>>
>>> Me gustar?poderlos abreviar as?> Hymenocephalus italicus --> H.italicus
>>> Merluccius merluccius --> M.merluccius
>>>
>>> He probado con varias opciones y no consigo dar con ello. Estoy casi
>>> seguro de que es algo relativamente sencillo, pero no doy con ello.
>>>
>>> ?Alguien podr?echarme una mano?.
>>>
>>> Un saludo y gracias
>>>
>>> Juan Carlos
>>>
>>>
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>> 	[[alternative HTML version deleted]]
>>
>>
>>
>> ------------------------------
>>
>> Message: 5
>> Date: Mon, 12 Jan 2015 23:34:09 +0000
>> From: Francisco Rodr�guez <fjroar en hotmail.com>
>> To: <"Javier Rub?n\" <javier.ruben.marcuzzi en gmail.com>;
>> 	"r-help-es en r-project.org" <r-help-es en r-project.org>">
>> Subject: Re: [R-es] Abreviar nombres ci�ntificos
>> Message-ID: <DUB128-W36508EEC6F4ED4DB42D1ABCD430 en phx.gbl>
>> Content-Type: text/plain; charset="UTF-8"
>>
>> En la linea de lo que comenta Javier, hay una librer�a que permite el tratamiento de string de modo bastante sencillo y aporta muchas funciones, es la stringr si tienes los datos m�s o menos adecuadamente dispuestos.
>> Puede que en tu caso funciones como la de str_extract(string, pattern) sea interesante para localizar exactamente el sitio donde est� el espacio en blanco o para extraer en 2 componentes los 2 elementos puede usarse str_split(string, pattern, n = Inf)
>> Espero haber ayudado
>> Un saludo, Francisco
>>> Date: Mon, 12 Jan 2015 20:09:06 -0300
>>> From: javier.ruben.marcuzzi en gmail.com
>>> To: r-help-es en r-project.org
>>> Subject: Re: [R-es] Abreviar nombres ci�ntificos
>>>
>>> Estimado Juan Carlos
>>>
>>> Nuca use make.cepnames, pero creo que el problema o soluci�n depende de
>>> como tenga los datos, pienso en lo siguiente, el nombre es una cadena,
>>> busca la separaci�n (espacio en blanco), a partir de este toma las dos
>>> palabras en forma separadas, a al primera le toma el primer caracter,
>>> luego concatena esta con la segunda agregando el punto. Claro, escrito
>>> as� es f�cil, pero depende de como se puedan obtener los datos, o de
>>> como est�n guardados.
>>>
>>> Por el contrario, si est�n en una base de datos donde se emplean dos
>>> campos, el planteo es sencillo con una consulta sql.
>>>
>>> Creo que tendr�a que enviar un listado de cinco nombres de la forma en
>>> que los tiene en su computadora para que podamos replicar el problema y
>>> aportar un c�digo que de fuese �til.
>>>
>>> Javier Marcuzzi
>>>
>>>
>>> El 12/01/2015 a las 06:34 p.m., JC Arronte escibi�:
>>>> Hola a tod en s,
>>>>
>>>> Estoy tratando de abreviar nombres ci?ntificos pero no me gusta c?mo queda usando make.cepnames de la librer?a vegan.
>>>>
>>>> Me gustar?a poderlos abreviar as?,
>>>> Hymenocephalus italicus --> H.italicus
>>>> Merluccius merluccius --> M.merluccius
>>>>
>>>> He probado con varias opciones y no consigo dar con ello. Estoy casi seguro de que es algo relativamente sencillo, pero no doy con ello.
>>>>
>>>> ?Alguien podr?a echarme una mano?.
>>>>
>>>> Un saludo y gracias
>>>>
>>>> Juan Carlos
>>>>
>>>>
>>>>    		 	   		
>
>   		 	   		
> 	[[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es