r - 在嵌套级别中创建显式隐式缺失值

标签 r dplyr expand levels

我正在尝试完成缺少级别的数据框。

电流输出

id foo bar val
1   a   x   7
2   a   y   9
3   a   z   6
4   b   x  10
5   b   y   4
6   b   z   5
7   c   y   2

数据

structure(list(id = c("1", "2", "3", "4", "5", "6", "7"), foo = c("a", 
"a", "a", "b", "b", "b", "c"), bar = c("x", "y", "z", "x", "y", 
"z", "y"), val = c("7", "9", "6", "10", "4", "5", "2")), .Names = c("id", 
"foo", "bar", "val"), row.names = c(NA, -7L), class = "data.frame")

我想明确 c 缺失的嵌套级别与 0s对于 xz 。我可以找到解决方法 expand.grid但无法通过 tidyr 获得所需的输出。

期望的输出:

id foo bar val
1   a   x   7
2   a   y   9
3   a   z   6
4   b   x   10
5   b   y   4
6   b   z   5
7   c   x   0
8   c   y   2
9   c   z   0

提前致谢!

最佳答案

鉴于您正在寻找 tidyr 解决方案,您应该查看 tidyr::complete (它正是您所追求的):

library(tidyverse)

complete(df, foo, bar, fill = list(val = 0)) %>% select(-id)
#> # A tibble: 9 x 3
#>   foo   bar   val  
#>   <chr> <chr> <chr>
#> 1 a     x     7    
#> 2 a     y     9    
#> 3 a     z     6    
#> 4 b     x     10   
#> 5 b     y     4    
#> 6 b     z     5    
#> 7 c     x     0    
#> 8 c     y     2    
#> 9 c     z     0

关于r - 在嵌套级别中创建显式隐式缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063999/

相关文章:

r - R 中与 grepl() 函数的模式匹配

r - 将 S4 R 对象分配给矩阵 : why does this work?

r - 过滤分组变量

r - 从查找表中更新向量的某些值的规范 tidyverse 方法

r - 使用 dplyr 的数据框中的频率加权百分位数

qt - 如何使 QLineEdit 在 QScrollArea 内展开

ec2 上的 R 程序似乎很慢?

html - 可扩展的 DIV 高度以适应内部内容——我做错了什么?

kendo-ui - Kendo Grid - 组 展开折叠 事件

Rselenium - 弹出窗口