Ashish25
Ashish25

Reputation: 2023

Difference between aggregate and table functions

Age <- c(90,56,51,64,67,59,51,55,48,50,43,57,44,55,60,39,62,66,49,61,58,55,45,47,54,56,52,54,50,62,48,52,50,65,59,68,55,78,62,56)

Tenure <- c(2,2,3,4,3,3,2,2,2,3,3,2,4,3,2,4,1,3,4,2,2,4,3,4,1,2,2,3,3,1,3,4,3,2,2,2,2,3,1,1)

df <- data.frame(Age, Tenure)

I'm trying to count the unique values of Tenure, thus I've used the table() function to look at the frequencies

table(df$Tenure)

1  2  3  4 
5 15 13  7

However I'm curious to know what the aggregate() function is showing?

aggregate(Age~Tenure , df, function(x) length(unique(x)))

Tenure Age
1      1   3
2      2  13
3      3  11
4      4   7

What's the difference between these two outputs?

Upvotes: 2

Views: 253

Answers (1)

G5W
G5W

Reputation: 37641

The reason for the difference is your inclusion of unique in the aggregate. You are counting the number of distinct Ages by Tenure, not the count of Ages by Tenure. To get the analogous output with aggregate try

aggregate(Age~Tenure , df, length)
  Tenure Age
1      1   5
2      2  15
3      3  13
4      4   7

Upvotes: 4

Related Questions