R/Excel/Tableau - 主标题和副标题
R/Excel/Tableau - pivot title and subtitles
我想旋转 table 标题和副标题如下:
November November December December
Firm On-time Not On-time Not
A 67% 33% 23% 77%
B 100% 0% 50% 50%
etc etc
于是我得到
Firm Month status pct
A November on-time 67%
A November Not 33%
A December on-time 23%
A December Not 77%
B etc etc
我希望在 Tableau、R 或 Excel
中完成此操作
你能帮帮我吗?
如果之前有人问过这个问题,请指导我,因为我找不到它。
如果输入数据集是标准格式(即唯一的列名,没有"sub-headers"),会容易得多,但我们仍然可以使用tidyverse
等工具将其转换为期望的输出]:
library(tidyverse)
df %>%
rownames_to_column(var = "Firm") %>%
gather(Month, pct, -Firm) %>%
mutate(Month = sub('\.\d$', '', Month),
status = ifelse(Firm == "Firm", pct, NA)) %>%
fill(status) %>%
filter(Firm != "Firm") %>%
arrange(Firm)
结果:
Firm Month pct status
1 A November 67% On-time
2 A November 33% Not
3 A December 23% On-time
4 A December 77% Not
5 B November 100% On-time
6 B November 0% Not
7 B December 50% On-time
8 B December 50% Not
数据:
df = read.table(text=" November November December December
Firm On-time Not On-time Not
A 67% 33% 23% 77%
B 100% 0% 50% 50%", header = TRUE, row.names = 1)
我想旋转 table 标题和副标题如下:
November November December December
Firm On-time Not On-time Not
A 67% 33% 23% 77%
B 100% 0% 50% 50%
etc etc
于是我得到
Firm Month status pct
A November on-time 67%
A November Not 33%
A December on-time 23%
A December Not 77%
B etc etc
我希望在 Tableau、R 或 Excel
中完成此操作你能帮帮我吗?
如果之前有人问过这个问题,请指导我,因为我找不到它。
如果输入数据集是标准格式(即唯一的列名,没有"sub-headers"),会容易得多,但我们仍然可以使用tidyverse
等工具将其转换为期望的输出]:
library(tidyverse)
df %>%
rownames_to_column(var = "Firm") %>%
gather(Month, pct, -Firm) %>%
mutate(Month = sub('\.\d$', '', Month),
status = ifelse(Firm == "Firm", pct, NA)) %>%
fill(status) %>%
filter(Firm != "Firm") %>%
arrange(Firm)
结果:
Firm Month pct status
1 A November 67% On-time
2 A November 33% Not
3 A December 23% On-time
4 A December 77% Not
5 B November 100% On-time
6 B November 0% Not
7 B December 50% On-time
8 B December 50% Not
数据:
df = read.table(text=" November November December December
Firm On-time Not On-time Not
A 67% 33% 23% 77%
B 100% 0% 50% 50%", header = TRUE, row.names = 1)