当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dbplyr expand.tbl_lazy 扩展 SQL 表以包含所有可能的值组合


这是tidyr::expand 泛型的方法。它不会显式对结果进行排序,因此顺序可能与 expand() 针对数据帧返回的顺序不同。

用法

# S3 method for tbl_lazy
expand(data, ..., .name_repair = "check_unique")

参数

data

由数据库查询支持的惰性 DataFrame 。

...

要扩展的列规范。有关更多详细信息,请参阅tidyr::expand

.name_repair

有问题的列名的处理:

  • "minimal":没有名称修复或检查,超出基本存在,

  • "unique" :确保名称唯一且不为空,

  • "check_unique" :(默认值),没有名称修复,但检查它们是 unique

  • "universal" :命名为 unique 和语法

  • 函数:应用自定义名称修复(例如,.name_repair = make.names 用于基本 R 样式的名称)。

  • purrr-style 匿名函数,请参阅rlang::as_function()

此参数作为 repair 传递到 vctrs::vec_as_names() 。有关这些条款以及用于执行这些条款的策略的更多详细信息,请参阅此处。

另一个tbl_lazy。使用show_query()查看生成的查询,并使用collect()执行查询并将数据返回到R。

例子

fruits <- memdb_frame(
  type   = c("apple", "orange", "apple", "orange", "orange", "orange"),
  year   = c(2010, 2010, 2012, 2010, 2010, 2012),
  size = c("XS", "S",  "M", "S", "S", "M"),
  weights = rnorm(6)
)

# All possible combinations ---------------------------------------
fruits %>% tidyr::expand(type)
#> # Source:   SQL [2 x 1]
#> # Database: sqlite 3.41.2 [:memory:]
#>   type  
#>   <chr> 
#> 1 apple 
#> 2 orange
fruits %>% tidyr::expand(type, size)
#> # Source:   SQL [6 x 2]
#> # Database: sqlite 3.41.2 [:memory:]
#>   type   size 
#>   <chr>  <chr>
#> 1 apple  XS   
#> 2 apple  S    
#> 3 apple  M    
#> 4 orange XS   
#> 5 orange S    
#> 6 orange M    

# Only combinations that already appear in the data ---------------
fruits %>% tidyr::expand(nesting(type, size))
#> # Source:   SQL [4 x 2]
#> # Database: sqlite 3.41.2 [:memory:]
#>   type   size 
#>   <chr>  <chr>
#> 1 apple  XS   
#> 2 orange S    
#> 3 apple  M    
#> 4 orange M    
源代码:R/verb-expand.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Expand SQL tables to include all possible combinations of values。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。