Dear Jim,

17.03.2011 20:54, Jim Silverton wrote:
I have a matrix say:

23   1
12  12
0    0
0   1
0   1
0   2
23  2

I want to count of number of distinct rows and the number of disinct element
in the second column and put these counts in a column. SO at the end of the
day I should have:

c(1, 1, 1, 2, 2, 1, 1) for the distinct rows...

Let's suppose my.data is your data frame, "var" is the 1st column and "var1" is the second.

1) Create a 3rd columns for the first task:
   my.data$var2<-0
2) Count distinct rows:

for (i in 1:nrow(my.data)) { my.data$var2[i]<-nrow(subset(my.data, var==var[i] & var1==var1[i])) }

After this, the output of "my.data$var2" is:

[1] 1 1 1 2 2 1 1

> ... and c(1, 1, 1, 2, 2, 2, 2) for the counts of how many times the
> elements in the second column exists.

Here I'm a bit irritated. Shouldn't the count for the first element "1" rather be 3, since the number 3 occurs three times... If this is what You are looking for, then the following should work:

1) Create a 4th column for:
   my.data$var3<-0
2) Count distinct elements in the second column:

for (i in 1:nrow(my.data)) { my.data$var3[i]<-sum(my.data$var1==my.data$var1[i]) }

After this, the output of "my.data$var3" is:

[1] 3 1 1 3 3 2 2

HTH,
Kimmo

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to