dplyr的group_by出现错误

6
这是我的数据集。
N  Pl

10, WO
20, EI
10, WO
20, WO
30, EI

我的期望输出是

N   Pl
10,  2
20,  1
30,  1 

基本上,我正在计算每个值为N的pl数量。

我正在尝试使用dplyr。我知道可能也可以使用aggregate()来完成这项任务,但我不确定如何做到这一点。所以在dplyr中,我运行此语句并获取以下错误:

语句:

Diff %>% group_by(N) %>% summarise(pl=count(pl))

这里的Diff是我的表名。
Error in UseMethod("group_by_") : no applicable method for 'group_by_' applied to an object of class "c('integer', 'numeric')"

我不确定如何做到这一点。任何帮助将不胜感激。另外,我只有基本的R知识。


即使您计算“唯一”出现次数,所得结果也将是错误的。 - rmuc8
2
也许你的意思是:Diff %>% group_by(N) %>% summarise(pl= n_distinct(pl)) - talat
尝试运行:Diff$N <- as.factor(Diff$N) - jeremycg
你期望的输出(可能是错误的),但我们可以使用 base R 得到它:d1 <- as.data.frame.matrix(table(Diff));d2 <- data.frame(N= rownames(d1), Pl= do.call(pmax,d1)) - akrun
1个回答

4
也许您期望的输出有误,请尝试:
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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接