[R] cluster by unique value

Sarah Goslee
2011-07-18T10:36:13Z

Your data1 and your data1_class file differ in the first three
columns. Assuming that's an error, here's one way to do it:

> data1 <- data.frame(layer1=c(.2, .5, .2, .8, .2, .5, .5, .8, .2,
.8),layer2=c(2,3,2,2,1,2,3,2,2,2), layer3=c(1,1,1,1,1,1,1,1,1,4))
> data1 <- cbind(data1, class=as.numeric(as.factor(do.call(paste,
data1))))
> data1
   layer1 layer2 layer3 class
1     0.2      2      1     2
2     0.5      3      1     4
3     0.2      2      1     2
4     0.8      2      1     5
5     0.2      1      1     1
6     0.5      2      1     3
7     0.5      3      1     4
8     0.8      2      1     5
9     0.2      2      1     2
10    0.8      2      4     6

You didn't give a reproducible example, and I didn't want to type in
all the decimal places, but you should be able to get the idea from
this example. Also, the class numbers are assigned on sorted character
rows, from lowest to highest, and not starting with the first one, as
in your example.  If you do need the latter, some combination of
unique() and subsetting or merge() may work for you.

Sarah

On Mon, Jul 18, 2011 at 6:23 AM, Alfredo Alessandrini
<alfreale74 at gmail.com> wrote:
> Hi,
>
> I need to make a cluster classification by the unique values of the data
frame.
>
> I explain the problem. I need to classify this table, and assign to
> the same cluster each row that has the same combination of value:
>
>
>> data1
> ? ? ? ? ? ? layer_1 layer_2 layer_3
> ? [1,] 0.2460000000 ? ? ? 2 ? ?-0.1
> ? [2,] 0.5460000000 ? ? ? 3 ? ?-0.1
> ? [3,] 0.2460000000 ? ? ? 2 ? ?-0.1
> ? [4,] 0.8460000000 ? ? ? 2 ? ?-0.1
> ? [5,] 0.2460000000 ? ? ? 1 ? ?-0.1
> ? [6,] 0.5460000000 ? ? ? 2 ? ?-0.1
> ? [7,] 0.2460000000 ? ? ? 2 ? ?-0.1
> ? [8,] 0.8460000000 ? ? ? 2 ? ?-0.1
> ? [9,] 0.2460000000 ? ? ? 2 ? ?-0.1
> ?[10,] 0.2460000000 ? ? ? 2 ? ?-0.1
>
>
>> data1_class
> ? ? ? ? ? ? layer_1 layer_2 layer_3 class
> ? [1,] 0.2460000000 ? ? ? 2 ? ?-0.1 ?1
> ? [2,] 0.5460000000 ? ? ? 3 ? ?-0.1 ?2
> ? [3,] 0.2460000000 ? ? ? 2 ? ?-0.1 ?1
> ? [4,] 0.8460000000 ? ? ? 2 ? ?-0.1 ?3
> ? [5,] 0.2460000000 ? ? ? 1 ? ?-0.1 ?4
> ? [6,] 0.5460000000 ? ? ? 2 ? ?-0.1 ?5
> ? [7,] 0.5460000000 ? ? ? 3 ? ?-0.1 ?2
> ? [8,] 0.8460000000 ? ? ? 2 ? ?-0.1 ?3
> ? [9,] 0.2460000000 ? ? ? 2 ? ?-0.1 ?1
> ?[10,] 0.8460000000 ? ? ? 2 ? ?-0.4 ?6
>
>

--
Sarah Goslee