Reputation: 1716
This is my dataset
N Pl
10, WO
20, EI
10, WO
20, WO
30, EI
My expected output is
N Pl
10, 2
20, 1
30, 1
So, basically, I am counting number of pl with each value at N
I am trying dplyr. I know probably this can also be done with aggregate() but I am not sure how to do with that. So in dplyr I am running this statement and getting the following error
Statement:
Diff %>% group_by(N) %>% summarise(pl=count(pl))
Here Diff
is my table name
Error in UseMethod("group_by_") : no applicable method for 'group_by_' applied to an object of class "c('integer', 'numeric')"
I am not sure how to do that. Any help will be appreciated. Also I have only basic knowledge of R
Upvotes: 6
Views: 19132
Reputation: 3043
Maybe your desired output is wrong, try:
library(dplyr)
df<-data.frame(N=c(10,20,10,20,30), Pl=c("WO","EI","WO","WO","EI"))
group <- group_by(df, N)
result <- as.data.frame(summarise(group, Pl = n_distinct(Pl)))
result
N Pl
1 10 1
2 20 2
3 30 1
# the data.table way
library(data.table)
setDT(df)[, list(Pl=uniqueN(Pl)), by= N]
Upvotes: 4