r中的聚合正在删除表中的0计数。如何让它表现出来?
我正在尝试使用r中的聚合正在删除表中的0计数。如何让它表现出来?,r,aggregate,summarize,R,Aggregate,Summarize,我正在尝试使用aggregate中的FUN参数生成一个带有aggregate的表,以便进一步处理。这是我的密码 var <- c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,
aggregate
中的FUN
参数生成一个带有aggregate
的表,以便进一步处理。这是我的密码
var <- c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
aggregate(var, list(group), FUN = table)
预期结果应如下所示:
Group.1 x.0 x.1
1 1 61 3
2 2 112 3
3 3 30 2
4 4 21 0
我该如何解决这个问题 我们需要将“var”创建为
因子
,其中级别
指定为0和1。这将确保如果计数为0,则特定列将显示为0
var <- factor(var, levels = 0:1)
out <- aggregate(var, list(group), FUN = table)
out
# Group.1 x.0 x.1
#1 1 29 21
#2 2 29 21
#3 3 23 27
#4 4 0 50
请注意,这些操作将生成一个带有两列的矩阵'x'。以便具有常规的data.frame
列
do.call(data.frame, out)
或者,如果需要更改,我们也可以得到1s的和,然后重塑
reshape(aggregate(cbind(n = rep(1, length(group))) ~
group+ var, FUN = sum), idvar = 'group', direction = 'wide', timevar = 'var')
如果我们使用的是tidyverse
,而不是类中的任何更改,即转换为因子
,则使用两个变量进行计数
,然后将其扩展为“宽”格式
library(tidyverse)
tibble(var, group) %>%
count(var, group) %>%
spread(var, n, fill = 0)
# A tibble: 4 x 3
# group `0` `1`
# <int> <dbl> <dbl>
#1 1 29 21
#2 2 29 21
#3 3 23 27
#4 4 0 50
库(tidyverse)
TIBLE(变量,组)%>%
计数(变量,组)%>%
排列(变量n,填充=0)
#一个tibble:4x3
#组'0``1`
#
#1 1 29 21
#2 2 29 21
#3 3 23 27
#4 4 0 50
数据
set.seed(24)
变量
reshape(aggregate(cbind(n = rep(1, length(group))) ~
group+ var, FUN = sum), idvar = 'group', direction = 'wide', timevar = 'var')
library(tidyverse)
tibble(var, group) %>%
count(var, group) %>%
spread(var, n, fill = 0)
# A tibble: 4 x 3
# group `0` `1`
# <int> <dbl> <dbl>
#1 1 29 21
#2 2 29 21
#3 3 23 27
#4 4 0 50
set.seed(24)
var <- sample(0:1, 200, replace = TRUE)
var[151:200] <- 1
group <- rep(1:4, each = 50)