R:所有因素水平的总和(存在和不存在)
我可以使用R:所有因素水平的总和(存在和不存在),r,aggregate,dplyr,R,Aggregate,Dplyr,我可以使用dplyr将data.frame简单地聚合为以下内容: z <- data.frame(a = rnorm(20), b = rep(letters[1:4], each = 5)) library(dplyr) z %>% group_by(b) %>% summarise(out = n()) Source: local data frame [4 x 2] b out (fctr) (int) 1 a 5
dplyr
将data.frame
简单地聚合为以下内容:
z <- data.frame(a = rnorm(20), b = rep(letters[1:4], each = 5))
library(dplyr)
z %>%
group_by(b) %>%
summarise(out = n())
Source: local data frame [4 x 2]
b out
(fctr) (int)
1 a 5
2 b 5
3 c 5
4 d 5
但是很明显,在这个特定的中没有任何内容,但在另一个中可能有。如何聚合此数据,使缺少的因子的长度为0
期望输出:
Source: local data frame [4 x 2]
b out
(fctr) (int)
1 a 5
2 b 5
3 c 5
4 d 5
5 e 0
解决方法是连接包含所有级别的表:
z <- full_join(z, data.frame(b=levels(z$b))
z一种方法是使用“tidyr”中的complete
。您必须首先使用mutate
来计算列“b”的系数:
您可以使用xtabs:
xtabs(a ~ b, z)
这将聚合z$b,而不是像您的示例中那样仅计算z$a中的级别,但这很容易通过表实现:
table(z$a)
您可以像这样使用tapply
tapply(z$b,z$b,length)
我认为这是一个很好的例子。
xtabs(a ~ b, z)
table(z$a)