使用dplyr汇总数据集,我想调用n_distinct来计算列中唯一出现次数.但是,我还想对列中满足另一列条件的所有唯一事件进行另一次汇总().
名为"a"的示例数据帧:
A B 1 Y 2 N 3 Y 1 Y
a %>% summarise(count = n_distinct(A))
不过,我也想添加的数量n_distinct(A)
,其中B == "Y"
结果应该是:
count 3
添加条件时,结果应为:
count 2
我试图实现的最终结果是两个语句合并为一个调用,给我一个结果
count_all count_BisY 3 2
使用dplyr进行此操作的适当方法是什么?
另一种方法是使用dplyr中的data.tableuniqueN
函数:
library(dplyr) library(data.table) a %>% summarise(count_all = n_distinct(A), count_BisY = uniqueN(A[B == 'Y']))
这使:
count_all count_BisY 1 3 2
您还可以使用data.table执行所有操作:
library(data.table) setDT(a)[, .(count_all = uniqueN(A), count_BisY = uniqueN(A[B == 'Y']))]
这给出了相同的结果.
这使用dplyr通过B的每个值产生不同的A计数.
library(dplyr) a %>% group_by(B) %>% summarise(count = n_distinct(A))
这会产生结果:
Source: local data frame [2 x 2] B count (fctr) (int) 1 N 1 2 Y 2
要使用dplyr生成上面添加的所需输出,您可以执行以下操作:
a %>% summarise(count_all = n_distinct(A), count_BisY = length(unique(A[B == 'Y'])))
这会产生结果:
count_all count_BisY 1 3 2