将分组转换为数据透视表

时间:2015-12-29 21:09:32

标签: sql r excel group-by pivot-table

我有一段数据我正在尝试转换为excel数据透视表,以利用双击单元格的功能,并生成包含详细信息的新工作表。

当前的分组和计数是在R / SQL中使用类似的东西完成的:

sqla <- paste('select Species
              , CASE WHEN "Sepal.Length" >= 5.8
                THEN 1
                ELSE 0
                END LongSepalLength
              , CASE WHEN "Sepal.Width" >= 3
                THEN 1
                ELSE 0
                END LongSepalWidth
              , CASE WHEN "Petal.Length" >= 3.75
                THEN 1
                ELSE 0
                END LongPetalLength
              , CASE WHEN "Petal.Width" >= 1.12
                THEN 1
                ELSE 0
                END LongPetalWidth    

              , count(*) Count 
              from iris    
              group by Species
                , CASE WHEN "Sepal.Length" >= 5.8
                THEN 1
                ELSE 0
                END 
              , CASE WHEN "Sepal.Width" >= 3
                THEN 1
                ELSE 0
                END 
              , CASE WHEN "Petal.Length" >= 3.75
                THEN 1
                ELSE 0
                END 
              , CASE WHEN "Petal.Width" >= 1.12
                THEN 1
                ELSE 0
                END 
              ', sep = '')
sqlb <- sqldf(sqla)
sqlb

这会产生如下内容:

      Species LongSepalLength LongSepalWidth LongPetalLength LongPetalWidth Count
1      setosa               0              0               0              0     2
2      setosa               0              1               0              0    47
3      setosa               1              1               0              0     1
4  versicolor               0              0               0              0     6
5  versicolor               0              0               0              1     1
6  versicolor               0              0               1              0     2
7  versicolor               0              0               1              1     8
8  versicolor               0              1               1              1     4
9  versicolor               1              0               1              0     2
10 versicolor               1              0               1              1    15
11 versicolor               1              1               1              1    12
12  virginica               0              0               1              1     3
13  virginica               1              0               1              1    18
14  virginica               1              1               1              1    29

哪个是整洁可读的。我想要的是双击“计数”列并让excel生成一张表格,其中包含该单元格中包含的行的详细信息。

因此,我使用此代码创建数据以转到Excel:

sqla <- paste('select Species
              , CASE WHEN "Sepal.Length" >= 5.8
              THEN 1
              ELSE 0
              END LongSepalLength
              , CASE WHEN "Sepal.Width" >= 3
              THEN 1
              ELSE 0
              END LongSepalWidth
              , CASE WHEN "Petal.Length" >= 3.75
              THEN 1
              ELSE 0
              END LongPetalLength
              , CASE WHEN "Petal.Width" >= 1.12
              THEN 1
              ELSE 0
              END LongPetalWidth
              from iris
              ', sep = '')
sqlb <- sqldf(sqla)
sqlb

write.csv(sqlb, file = '~/iris.csv', row.names = F)

但是,当我尝试在Excel数据透视表中重新创建上面的整洁表时,我得到了这个: enter image description here

哪个无法使用。

有关如何获得类似SQL表的内容的任何建议吗?

1 个答案:

答案 0 :(得分:1)

你是对的R,只需要几个支点选项:

  • 选择所有字段作为行
  • 选择物种数量作为值
  • 删除子总计和一般总计
  • 选择带有重复标签的表格布局

enter image description here