R中的数据透视表输出?

Jef*_*son 12 pivot-table r reshape

我正在撰写一份报告,要求在Excel中生成多个数据透视表.我想有一种方法可以在R中执行此操作,以便我可以避免使用Excel.我想输出如下面的截图(教师姓名编辑).据我所知,我可以使用reshape包来计算聚合值,但我需要多次这样做,并以某种方式以正确的顺序获取所有数据.那时,我应该在Excel中完成它.有没有人有任何建议或包装建议?谢谢!

(编辑)数据从学生,他们的老师,学校和成长列表开始.然后汇总这些数据以获得具有平均班级增长的教师列表.请注意,然后老师按学校分组.我预见到目前为止这个问题最大的问题是你如何获得小计和总行数(BSA1总计,总计等),因为它们与其他行的观察类型不同?您是否只需手动计算它们并尝试以正确的顺序获取它们,以便它们出现在该组的底部?

例

JD *_*ong 19

这是计算位的赃物:

set.seed(1)
school  <- sample(c("BSA1", "BSA2", "HSA1"), 100, replace=T)
teacher <- sample(c("Tom", "Dick", "Harry"), 100, replace=T)
growth <- rnorm(100, 5, 3)

myDf <- data.frame(school, teacher, growth)

require(reshape2)

aggregate(growth ~ school + teacher, data =myDf, FUN=mean)

myDf.melt <- melt(myDf, measured="growth")
dcast(myDf.melt, school + teacher ~ ., fun.aggregate=mean, margins=c("school", "teacher"))
Run Code Online (Sandbox Code Playgroud)

我没有解决输出格式,只有计算.生成的数据框应如下所示:

   school teacher       NA
1    BSA1    Dick 4.663140
2    BSA1   Harry 4.310802
3    BSA1     Tom 5.505247
4    BSA1   (all) 4.670451
5    BSA2    Dick 6.110988
6    BSA2   Harry 5.007221
7    BSA2     Tom 4.337063
8    BSA2   (all) 5.196018
9    HSA1    Dick 4.508610
10   HSA1   Harry 4.890741
11   HSA1     Tom 4.721124
12   HSA1   (all) 4.717335
13  (all)   (all) 4.886576
Run Code Online (Sandbox Code Playgroud)

该示例使用reshape2包来处理小计.

我认为R是这里工作的正确工具.我完全理解不确定如何开始这个分析.几年前我从Excel来到R,起初可能很难.让我指出四个专业提示,以帮助您在Stack Overflow中获得更好的答案:

1)提供数据,即使模拟:您可以看到我在答案开始时模拟了一些数据.如果你提供了那个模拟它会a)节省我的时间b)给你一个使用你自己的数据结构的答案,而不是我梦想的那个和c)其他人会回答.我经常跳过没有数据的问题,因为我已经厌倦了猜测数据被告知我的答案很糟糕因为我猜错了.

2)问一个明确的问题."我如何做我的工作"不是一个明确的问题."我如何获取此示例数据并在聚合中创建小计,如此示例输出"是一个特定的问题.

3)不断询问!我们都在练习中变得更好.你试图在R中做更多而在Excel中做得更少,所以你显然高于平均智力.继续使用R并继续提问.一切都会变得更加容易.

4)描述事物时要小心你的话.你在编辑过的问题中说你有一份"清单".R中的列表是特定的数据结构.我怀疑你实际上有一个数据框,并且在一般意义上使用术语"列表".这可能会造成一些混乱.它还说明了您希望提供自己的数据的原因.

  • 如果你要解决格式化问题,你会建议使用xtable和Sweave吗?或者你推荐别的什么?再次感谢你. (2认同)

42-*_*42- 10

使用JD Long的模拟数据,并添加sd和计数:

   library(reshape)  # not reshape2
   cast(myDf.melt, school + teacher ~ ., margins=TRUE , c(mean, sd, length))
   school teacher     mean       sd length
1    BSA1    Dick 4.663140 3.718773     14
2    BSA1   Harry 4.310802 1.430594      9
3    BSA1     Tom 5.505247 4.045846      4
4    BSA1   (all) 4.670451 3.095980     27
5    BSA2    Dick 6.110988 2.304104     15
6    BSA2   Harry 5.007221 2.908146      9
7    BSA2     Tom 4.337063 2.789244     14
8    BSA2   (all) 5.196018 2.682924     38
9    HSA1    Dick 4.508610 2.946961     11
10   HSA1   Harry 4.890741 2.977305     13
11   HSA1     Tom 4.721124 3.193576     11
12   HSA1   (all) 4.717335 2.950959     35
13  (all)   (all) 4.886576 2.873637    100
Run Code Online (Sandbox Code Playgroud)

  • Hadley说多重功能聚合在reshape2中被删除,以使其更快:http://twitter.com/#!/ hadleywickham/status/90859907947044864 (4认同)