在Excel(或R)中将长表转换为宽表
我需要将长excel表格转换为宽表格,如图所示。 在R和Tableau Prep中,我已经有了一些这样做的权限,但是我希望所有空/空白单元格都位于每个类别的末尾。不是在顶端。 Excel VBA可能是我最好的选择。但是我不熟悉VBA 我在R中获得宽表的代码:在Excel(或R)中将长表转换为宽表,r,excel,vba,R,Excel,Vba,我需要将长excel表格转换为宽表格,如图所示。 在R和Tableau Prep中,我已经有了一些这样做的权限,但是我希望所有空/空白单元格都位于每个类别的末尾。不是在顶端。 Excel VBA可能是我最好的选择。但是我不熟悉VBA 我在R中获得宽表的代码: 数据范围要使排列正常工作,您需要进行一些预处理。为每个扇区创建一个行号变量,删除编号列,然后删除排列 library(dplyr) df %>% group_by(Sector) %>% mutate(row = r
数据范围要使
排列
正常工作,您需要进行一些预处理。为每个扇区
创建一个行号变量,删除编号
列,然后删除排列
library(dplyr)
df %>%
group_by(Sector) %>%
mutate(row = row_number()) %>%
select(-Number) %>%
tidyr::spread(Sector, Description) %>%
select(-row)
# A tibble: 13 x 5
# Theme APPLE BANANA CHERRY ORANGE
# <chr> <chr> <chr> <chr> <chr>
# 1 Fall NA NA Y NA
# 2 Fall U NA Z V
# 3 Fall NA NA NA W
# 4 Fall NA NA NA X
# 5 Summer A I K D
# 6 Summer B J L E
# 7 Summer C NA M F
# 8 Summer N NA NA G
# 9 Summer NA NA NA H
#10 Winter NA Q NA NA
#11 Winter NA NA R NA
#12 Winter O NA S NA
#13 Winter T NA NA P
要使
spread
起作用,您需要进行一些预处理。为每个扇区
创建一个行号变量,删除编号
列,然后删除排列
library(dplyr)
df %>%
group_by(Sector) %>%
mutate(row = row_number()) %>%
select(-Number) %>%
tidyr::spread(Sector, Description) %>%
select(-row)
# A tibble: 13 x 5
# Theme APPLE BANANA CHERRY ORANGE
# <chr> <chr> <chr> <chr> <chr>
# 1 Fall NA NA Y NA
# 2 Fall U NA Z V
# 3 Fall NA NA NA W
# 4 Fall NA NA NA X
# 5 Summer A I K D
# 6 Summer B J L E
# 7 Summer C NA M F
# 8 Summer N NA NA G
# 9 Summer NA NA NA H
#10 Winter NA Q NA NA
#11 Winter NA NA R NA
#12 Winter O NA S NA
#13 Winter T NA NA P
不幸的是,正如你所看到的,我有一些宽格式的空白单元格。我需要在每个类别结束时都有空白单元格。简单地在R中重塑不会做到这一点。请以纯文本形式提供数据,以使此问题重现。您可以复制/粘贴
dput(数据集)
@neilfws的输出。我用纯文本数据(来自R)更新了我的问题。Mycode:>DATA\u STACK View(DATA\u STACK)>dput(STACK\R)不幸的是,正如您所看到的,我的有一些宽格式的空白单元格。我需要在每个类别结束时都有空白单元格。简单地在R中重塑不会做到这一点。请以纯文本形式提供数据,以使此问题重现。您可以复制/粘贴dput(数据集)
@neilfws的输出。我用纯文本数据(来自R)更新了我的问题。Mycode:>DATA\u STACK View(DATA\u STACK)>dput(STACK\R)您好,看起来这个选项正在工作。您知道如何将Tibble更改为数据集,以便导出到Excel吗?谢谢@Rohamsk是的,只需将其分配给变量df1%groupby(Sector)%%>%mutate(Number=row_Number())%%>%tidyr::spread(Sector,Description)%%>%select(-Number)
,然后使用write.csv
,write.csv(df1,/path/of/file/temp.csv),row.names=FALSE)
Hi,看起来这个选项正在工作。您知道如何将Tibble更改为数据集,以便导出到Excel吗?谢谢@Rohamsk是的,只需将其分配给变量df1%groupby(Sector)%%>%mutate(Number=row_Number())%%>%tidyr::spread(Sector,Description)%%>%select(-Number)
,然后使用write.csv
,write.csv(df1,/path/of/file/temp.csv),row.names=FALSE)
df %>%
group_by(Sector) %>%
mutate(Number = row_number()) %>%
tidyr::spread(Sector, Description)