如何使用映射到唯一值的分层和任意分组变量创建小标题?
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><chr> </td><td><int> </td><td><chr> </td><td><dbl></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
有没有一种优雅而通用的方法来重现下面的小标题?
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><chr> </td><td><int> </td><td><chr> </td><td><dbl></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