r - R中有没有办法填补缺少观察的缺失组?
问题描述
说我有类似的东西:
df<-data.frame(group=c(1, 1,1, 2,2,2,3,3,3,4,4, 1, 1,1),
group2=c(1,2,3,1,2,3,1,2,3,1,3, 1,2,3))
group group2
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
7 3 1
8 3 2
9 3 3
10 4 1
11 4 3
12 1 1
13 1 2
14 1 3
我的目标是计算 group= something 和 group2= something 的唯一实例数。像这样:
df1<-df%>%group_by(group, group2)%>% mutate(want=n())%>%distinct(group, group2, .keep_all=TRUE)
group group2 want
<dbl> <dbl> <int>
1 1 1 2
2 1 2 2
3 1 3 2
4 2 1 1
5 2 2 1
6 2 3 1
7 3 1 1
8 3 2 1
9 3 3 1
10 4 1 1
11 4 3 1
但是,请注意 group=4, group2=2 开始时不在我的数据集中。是否有某种自动填充功能,我可以用零填充这些非观察值以轻松低于?:
group group2 want
<dbl> <dbl> <int>
1 1 1 2
2 1 2 2
3 1 3 2
4 2 1 1
5 2 2 1
6 2 3 1
7 3 1 1
8 3 2 1
9 3 3 1
10 4 1 1
11 4 2 0
12 4 3 1
解决方案
得到 后count
,我们可以扩展 以complete
用 0 填充缺失的组合
library(dplyr)
library(tidyr)
df %>%
count(group, group2) %>%
complete(group, group2, fill = list(n = 0))
# A tibble: 12 x 3
# group group2 n
# <dbl> <dbl> <dbl>
# 1 1 1 2
# 2 1 2 2
# 3 1 3 2
# 4 2 1 1
# 5 2 2 1
# 6 2 3 1
# 7 3 1 1
# 8 3 2 1
# 9 3 3 1
#10 4 1 1
#11 4 2 0
#12 4 3 1
或者如果我们做group_by
, 而不是mutate
然后做distinct
, 直接使用summarise
df %>%
group_by(group, group2) %>%
summarise(n = n()) %>%
ungroup %>%
complete(group, group2, fill = list(n = 0))
推荐阅读
- wordpress - 当访客可以聊天选项被禁用时,箭头聊天无法与 wordrpess 多网络中的成员聊天
- ios - Xamarin.iOS。上诉。由于 Appodeal 插件中的旧 Yandex SDK,App Store 拒绝了应用
- c# - 无法读出我通过 ItemsEvents_ItemAddEventHandler 获得的项目
- php - 如何在 CodeIgniter 中使用自己的电子邮件库通过电子邮件库发送附件
- ansible - 如何在 Ansible 中默认从“全部”中排除库存组?
- javascript - 展平数组内部的数组
- sql-server - 如果 GetDate() 等于特定日期,则设置文本
- node-red - 节点红色显示不同仪表中的不同键值来自相同的有效载荷
- javascript - 如何在数组中查找缺失的数字
- c# - 为每个子目录创建一个 7zip 文件,从 winforms 中的输入路径到输出路径