如何使用映射到唯一值的分层和任意分组变量创建小标题?

How to create a tibble with hierarchically and arbitrary grouped variables mapped to unique values?

有没有一种优雅而通用的方法来重现下面的小标题?

data.frame(First=rep(c('A', 'B'), each=2),
       Second=rep(c(1, 2), each=4),
       Third=rep(c('true', 'false')),
       Unique=1:8, stringsAsFactors = F) %>% as.tibble()

输出:

<table><tbody><tr><th>First</th><th> Second</th><th> Third</th><th> Unique</th></tr><tr><td>&lt;chr&gt;  </td><td>&lt;int&gt; </td><td>&lt;chr&gt;  </td><td>&lt;dbl&gt;</td></tr><tr><td>A</td><td>1 </td><td>true</td><td>1</td></tr><tr><td>A</td><td>1 </td><td>false</td><td>2</td></tr><tr><td>B</td><td>1 </td><td>true</td><td>3</td></tr><tr><td>B</td><td>1 </td><td>false</td><td>4</td></tr><tr><td>A</td><td>2 </td><td>true</td><td>5</td></tr><tr><td>A</td><td>2</td><td>false</td><td>6</td></tr><tr><td>B</td><td>2 </td><td>true</td><td>7</td></tr><tr><td>B</td><td>2</td><td>false</td><td>8</td></tr></tbody></table>

嗨,这应该可以完成工作。

expand.grid(first = c('A', 'B'), second = 1:2, third = c("true", "false")) %>% 
  mutate(Unique = 1:n())

使用tidyverse函数,您可以:

tidyr::crossing(First = c('A', 'B'), Second = 1:2, Third = c(TRUE, FALSE)) %>%
   dplyr::mutate(Unique = row_number())


#  First Second Third Unique
#  <chr>  <int> <lgl>  <int>
#1 A          1 FALSE      1
#2 A          1 TRUE       2
#3 A          2 FALSE      3
#4 A          2 TRUE       4
#5 B          1 FALSE      5
#6 B          1 TRUE       6
#7 B          2 FALSE      7
#8 B          2 TRUE       8