Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel(或R)中将长表转换为宽表_R_Excel_Vba - Fatal编程技术网

在Excel(或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

我需要将长excel表格转换为宽表格,如图所示。

在R和Tableau Prep中,我已经有了一些这样做的权限,但是我希望所有空/空白单元格都位于每个类别的末尾。不是在顶端。 Excel VBA可能是我最好的选择。但是我不熟悉VBA

我在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)