Foro de discusión y soporte para usuarios de R

Un foro abierto a todos los temas relacionados con R que quiera.
Nota: Una url estable a este foro es https://knuth.uca.es/R-foro.

Graficar tabla de doble entrada

de gabriela gerardo -
Hola! Necesitaría que me pudieran indicar con que función puedo graficar una tabla de doble entrada, necesito que sea un gráfico de barras que compare el porcentaje en función de métodos y especie (todo en el mismo gráfico). Acá pongo la tabla que contiene los datos.

graminea latifoliada s. desnudo ---->especies
lineal 0.46 30.20 69.33
puntual 0.36 36.36 63.27
|
Método

Quizás si dispongo de los datos de otra manera podría ser mas fácil graficar, aún así no se como hacerlo.

método especie porcentaje
lineal gramínea 0.46
puntual gramínea 0.36
lineal latifoliada 30.2
puntual latifoliada 36.36
lineal s. desnudo 69.33
puntual s. desnudo 63.27

Desde ya agradezco todas las sugerencias.

Indexar una variable a otra

de Carmen Gonzalez -

Hola!

He empezado a trabajar con R hace muy poco y no lo domino muy bien.

Tengo que calcular los rendimientos semanales de una cartera de bonos (tengo 400 semanas). Estos rendimientos se calculan como la variación de los precios medios de los bonos, solo si hay algún bono que se haya negociado en dos semanas consecutivas, en caso contrario el rendimiento de la semana es cero.

Una vez establecidas las condiciones para seleccionar las semanas, selecciono los diferentes bonos que se negocian en cada una de ellas, del siguiente modo:

cusip.i<-levels(week.i$v3)# Para la primera semana. La variable v3 es la que tiene los nombres de los bonos.

cusip.i1<-levels(week.i1$v3)#. Para la segunda semana. 

Después establezco la condición para calcular los rendimientos si hay algún bono que coincida en dos semanas consecutivas (v6 es la variable que contiene los precios),  calculo los rendimientos  y trato de obtener los resultados de la siguiente forma:

for (z in 1:length(cusip.i))

for (k in 1:length(cusip.i1))
   
      {
       if (z==k)
       { 
     yield.bond[z]<-(mean(week.i1$v6[v3==cusip[z]])/mean(week.i$v6[v3==cusip[z]])-1)*100  

    yield.week<-mean(as.vector(yield.bond))
     }  
    else 0
    }
    print(yield.week)

Sin embargo, no lo calcula. Mi problema es que de la variable v6 que tienen los precios, solo tengo que seleccionar aquellos precios que corresponden a los bonos (variable v3) que se negocian en dos semanas. Es decir si la primera semana se negocian los bonos A, B y C; y en la segunda el B y el C. Tendría que calcular primero el rendimiento medio del bono B, después el del bono C, (trato de hacerlo en yield.bond[z]) y por último el rendimiento semanal como media de los rendimientos medios del bono B y C (trato de hacerlo en (yield.week).

Por favor, ¿podrían ayudarme?

Muchas gracias.

muestras aleatorias

de luz sil -
hola, necesito realizar una serie de multiplicaciones de 2 matrices,multiplicadas 500 veces en orden aleatorio, y hacer esto 1000 veces, de forma que al final obtenga 1000 matrices producto distintas, ya despues calcular el valor de lambda para cada matriz, alguien puede ayudarme con algunos codigos?

Boxplot de un dataframe

de Carolina Sanchez -
Tengo un data frame con 1000 entradas y 20 variables, quisiera hacer boxplot de cada variable pero tomando los datos para cada uno de 5 en 5, es decir, tomar las primeras 5 filas de la primera variables y hacer el boxplot, luego las siguientes 5 y así sucesivamente. Usando un for, como se haría?

Windows7 lento en el arranque de R

de Fernando Boris -
Tengo el R instalado en windows 7, y demora en abrir R, cuando consulte el administrador de tareas, observe que utilizaba 2,7 GB para abrirlo. Lo he descintalado y vuelto a instalar y no he tenido cambios. Alguien puede ayudar? (la version es la 2.13.1)

Combinar conjuntos de datos

de Nerea Valcarcel -

Hola,

de nuevo vuelvo a necesitar vuestra ayuda.

Ahora tengo dos conjuntos de datos diferentes y necesito combinarlos.

El primero es de la forma:

nº a1 a2 a3

1 35 4 13

2 1 0 16

3 19 23 42

4 6 3 0 (...)

y el segundo es:

nº var int

1 13 a3

2 6 a1

3 9 a1

4 15 a2 (...)

Cada valor del conjunto 2, va a incrementar en 1 una celda determinada del conjunto uno. De tal forma que "int" define la columna y "nº" la fila del primer conjunto al que hay que sumarle 1. Es decir, quedaría así

nº a1 a2 a3

1 35 4 14

2 2 0 16

3 20 23 42

4 6 4 0

Como veis, he sumado 1 en [2,a1], [3,a1], [4,a2] y [1,a3] del primer conjunto de datos.

Ahora que ya estoy aprendido a hacer bucles, se me ocurre cómo solucionarlo usando uno, el problema es que mi fichero tiene 51 columnas y varios miles de filas y el bucle que tengo en la cabeza implicaría muchas repeticiones, con lo cual no me conviene.

Espero que me podais ayudar una vez más. Gracias de antemano

Saludos,

Nerea

Adaptar curva de regresión

de Anibal Bueno Amoros -
Hola a todos, tengo un dataset que represento con un plot y obtengo una gráfica con una curva prácticamente logarítmica. Soy nuevo en R y me gustaria saber como puedo ajustar una curva de regresión a esa gráfica.

Gracias.

consulta sobre rectas de regresión

de franco dauro -
Hola, soy Franco de Argentina. Quisiera que me ayuden con lo siguiente: necesito hacer un gráfico plot (u otro gráfico de dispersión)y dentro de él quiero que aparezcan los datos, y ademas, más de una recta de regresión. El problema es que la función plot solo me permite hacer una sola recta. También quisiera aprender, en este mismo gráfico, a que los puntos no tengan todos el mismo formato.


Problemas abrir datos con Rcmdr

de María Martínez -

Hola,

estoy intentando abrir con Rcmdr un archivo excell que he transformado a .csv, pero no me lo permite, apareciéndome el siguiente error:

"número mágico de archivo de restauración inválido (el archivo puede estar dañado) -- ningún dato recargado"

Sin embargo, sí puedo  abrir el archivo en R mediante la siguiente ruta:

Nombre<-read.csv2 ("C/...)

¿A qué puede deberse el error?

Gracias de antemano y un saludo.