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)
[,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
[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