【问题标题】:R Summation in Pivot Table [closed]数据透视表中的 R 求和 [关闭]
【发布时间】:2017-06-15 06:41:13
【问题描述】:

我有一个包含 4 行(姓名、成绩、主题、分数)的数据透视表。有一个独特的组合,但分数可以有不同的值(基于期中分数、期末分数等)。在制作数据透视表时,我在单独的行中获取记录,例如 、 等。我想在最后一级汇总分数,并将输出设为 or 或 。最后一个级别应该处理基于先前级别的标记聚合。有没有办法做到这一点? attaching an example here, where I want to aggregate marks at last level

【问题讨论】:

  • 不清楚,请展示一下你的桌子是什么样子的。
  • 请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • 如果您使用的 R 库可以进行这样的显示,那么您应该为其命名并生成代码。如果这只是一个 Excel 问题,您应该删除 [r] 标签,因为您很有可能只是用它来烦 R 用户。
  • @V_Gupta:请回复 cmets 和答案。

标签: r aggregate pivot-table


【解决方案1】:

pivottabler 包可以生成问题中所示的表格。 (我是包作者)。

样本数据

Name = c("Rahul", "Rahul", "Rahul", "Rahul", "Rahul", "Rahul", "Ram", "Ram", "Ram", "Ram")
Grade = c(10, 10, 11, 11, 11, 11, 10, 10, 11, 11)
Subject = c("English", "Hindi", "English", "Hindi", "Maths", "Science", "English", "Hindi", "English", "Hindi")
Marks = c(90, 91, 72, 65, 90, 95, 90, 80, 83, 81)
Results = data.frame(Name, Grade, Subject, Marks)

分别列出每个结果

library(pivottabler)
pt <- PivotTable$new()
pt$addData(Results)
pt$addRowDataGroups("Name")
pt$addRowDataGroups("Grade", addTotal=FALSE)
pt$addRowDataGroups("Subject", addTotal=FALSE)
pt$addRowDataGroups("Marks", addTotal=FALSE)
pt$defineCalculation(calculationName="Totals", summariseExpression="n()")
pt # to output as plain text to console
pt$renderPivot() # to output as HTML table

显示结果的平均值

library(pivottabler)
pt <- PivotTable$new()
pt$addData(Results)
pt$addRowDataGroups("Name")
pt$addRowDataGroups("Grade", addTotal=FALSE)
pt$addRowDataGroups("Subject", addTotal=FALSE)
pt$defineCalculation(calculationName="Mean", summariseExpression="mean(Marks)")
pt$defineCalculation(calculationName="Totals", summariseExpression="n()")
pt # to output as plain text to console
pt$renderPivot() # to output as HTML table

【讨论】:

  • 看起来不像图片,但很接近。也许嵌入到某种以网络为目标的显示面板中?
  • 我认为原始帖子中的图片来自 rpivotTable 包(或等效的 javascript),其中通过拖放创建数据透视表,例如见here。我的答案中的图片是由 pivottabler 包生成的 HTML 输出,显示在 R Studio 的“查看器”窗格中,尽管可以导出 HTML,或者仅使用 R Studio(例如单击“在新窗口中显示” “查看器”窗格上的按钮)或使用 pt$saveHtml()。希望澄清。如果没有,请告诉我
  • 附言。我将原始问题解释为“我怎样才能生成看起来像这张图片的数据输出?”所以我的目标是匹配结构和数字,而不是样式/格式。
【解决方案2】:

你可以使用表格

table(df$Name, df$Grade, df$Subject, df$Marks)

df 是你的数据框

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    相关资源
    最近更新 更多