简体   繁体   English

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

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

Is there an elegant and generic way to reproduce below tibble?是否有一种优雅而通用的方式来在 tibble 下重现?

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()

output: output:

 <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>

Hi this should do the work.嗨,这应该做的工作。

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

Using tidyverse functions, you can do:使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM