Hola José Miguel,
si tienes los datos en una matriz es relativamente sencillo resolver
tu problema usando la opción duplicated, que te da un índice con los
elemntos repetidos.
Por ejemplo:
> datos <- matrix(data=c(1007,2,6,2,3,2,1,6,1100,1300,650,
+ 1007,2,6,3,2,2,1,6,200,1300,650,
+ 1058,1,1,2,3,1,1,6,2000,2000,2000,
+ 1438,1,1,2,5,1,1,6,300,300,300,
+ 1451,1,1,2,3,1,1,6,1747,1747,1747,
+ 1670,2,1,2,5,1,1,6,750,1185,592.5,
+ 1670,2,6,2,4,1,1,6,435,1185,592.5,
+ 1808,2,1,1,5,1,1,6,480,690,345,
+ 1808,2,6,1,5,1,1,6,210,690,345,
+ 1994,1,1,1,4,1,1,6,650,650,650),byrow=T,nrow=10)> datos
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 1007 2 6 2 3 2 1 6 1100 1300 650.0
[2,] 1007 2 6 3 2 2 1 6 200 1300 650.0
[3,] 1058 1 1 2 3 1 1 6 2000 2000 2000.0
[4,] 1438 1 1 2 5 1 1 6 300 300 300.0
[5,] 1451 1 1 2 3 1 1 6 1747 1747 1747.0
[6,] 1670 2 1 2 5 1 1 6 750 1185 592.5
[7,] 1670 2 6 2 4 1 1 6 435 1185 592.5
[8,] 1808 2 1 1 5 1 1 6 480 690 345.0
[9,] 1808 2 6 1 5 1 1 6 210 690 345.0
[10,] 1994 1 1 1 4 1 1 6 650 650
650.0>
> duplicated(datos[,1])
[1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
FALSE>
> datos[duplicated(datos[,1])==F,]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 1007 2 6 2 3 2 1 6 1100 1300 650.0
[2,] 1058 1 1 2 3 1 1 6 2000 2000 2000.0
[3,] 1438 1 1 2 5 1 1 6 300 300 300.0
[4,] 1451 1 1 2 3 1 1 6 1747 1747 1747.0
[5,] 1670 2 1 2 5 1 1 6 750 1185 592.5
[6,] 1808 2 1 1 5 1 1 6 480 690 345.0
[7,] 1994 1 1 1 4 1 1 6 650 650 650.0
Espero que te valga,
Jorge
> José Miguel Contreras García <jmcontreras en ugr.es> escribió:
>
>
>
> Tengo un problemilla, aparentamente tonto pero no logro resolverlo.
>
> Imaginaros que teneis:
>
> 1007 2 6 2 3 2 1 6 1100 1300 650
> 1007 2 6 3 2 2 1 6 200 1300 650
> 1058 1 1 2 3 1 1 6 2000 2000 2000
> 1438 1 1 2 5 1 1 6 300 300 300
> 1451 1 1 2 3 1 1 6 1747 1747 1747
> 1670 2 1 2 5 1 1 6 750 1185 592.5
> 1670 2 6 2 4 1 1 6 435 1185 592.5
> 1808 2 1 1 5 1 1 6 480 690 345
> 1808 2 6 1 5 1 1 6 210 690 345
> 1994 1 1 1 4 1 1 6 650 650 650
>
> Como veis se repite el primer elemento de algunas columnas, pues quiero
> hacer un bucle que me cree una tabla con solo la 1ª fila para cada valor
> que se repite, es decir que quede:
>
>
> 1007 2 6 2 3 2 1 6 1100 1300 650
> 1058 1 1 2 3 1 1 6 2000 2000 2000
> 1438 1 1 2 5 1 1 6 300 300 300
> 1451 1 1 2 3 1 1 6 1747 1747 1747
> 1670 2 1 2 5 1 1 6 750 1185 592.5
> 1808 2 1 1 5 1 1 6 480 690 345
> 1994 1 1 1 4 1 1 6 650 650 650
>
> Lo estoy intentando con
>
> for (i in 1:m) {
> levels(factor(hog[,1]))->kk
> write.table(kk,
file="kk.txt",append=TRUE,row.names=FALSE,col.names=FALSE,
> quote = FALSE)
> }
>
>
> o con
>
>
> for (j in 1:m-1){ subset (hog, hog[j,1]!=hog[j+1,1])-> hog2
> write.table(hog2,
> file="hog2.txt",append=TRUE,row.names=FALSE,col.names=FALSE,
quote > FALSE)
> }
> as.matrix(read.table("hog2.txt"))->hog2
>
>
>
> pero nada.
>
> Gracias
> --
> \|||/
> (o o)
> +-----------------------oOOo-(_)-oOOo------------------------------+
> | José Miguel Contreras |
>
> | e-mail: jmcontreras en ugr.es |
> | |
> +----------------------oooO-------Oooo-----------------------------+
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>