-2

我是一名 Excel 用户,试图将我的一些日常数据报告任务转换为 R。Excel 中最强大的功能之一是能够对数据进行透视和排序。我知道这些函数也是 R 中的特性,但我不确定如何编写代码来解决这个特定的分组和排序问题。

基本上,使用 RI 需要一个如下所示的数据集:

简单数据集

并将其转换为如下所示:

透视数据集

请注意,决赛桌按团队对分数进行分组,然后按得分对汇总数据进行排序。学习如何在 R 中执行此操作将节省大量时间。

提前感谢您的帮助!

4

2 回答 2

3

你将需要的两个函数......一旦你有一个例子......是xtabsftable。首先,我们将现有表转换为数据框,然后注意计数现在位于名为“Freq”的变量中。然后我们重新制表到更少的维度:

> Tdf <- as.data.frame(Titanic, stringsAsFactors=FALSE)
> str(Tdf)
'data.frame':   32 obs. of  6 variables:
 $ Class   : chr  "1st" "2nd" "3rd" "Crew" ...
 $ Sex     : chr  "Male" "Male" "Male" "Male" ...
 $ Age     : chr  "Child" "Child" "Child" "Child" ...
 $ Survived: chr  "No" "No" "No" "No" ...
 $ Freq    : num  0 0 35 0 0 0 17 0 118 154 ...

> ftable( xtabs(Freq ~ Class+Sex, Tdf) , row.vars=c("Class", "Sex") )
Class Sex        
1st   Female  145
      Male    180
2nd   Female  106
      Male    179
3rd   Female  196
      Male    510
Crew  Female   23
      Male    862

我没有得到很多积分,但我曾经演示过如何进行小计和总计:

R:计算列总和和行总和作为数据帧的聚合

于 2012-06-08T22:16:42.813 回答
2

首先,欢迎来到 R 和 SO。如果您遵循此处发布问题的指南,您会发现您会得到更好的答案:

如何制作一个出色的 R 可重现示例?

您可以通过多种方式完成您的要求。

首先,您需要对sumc(Team,Player). 有几种方法可以做到这一点:

  • by在基础 R 中,加上as.data.frame.bytaRifx包中
  • ddplyplyr包装中

然后获取结果输出并对其进行排序(同样,有很多方法可以做到这一点):

  • sorttaRifx包装中
  • arrangeplyr包装中

由于听起来您会经常这样做,因此我强烈建议您创建自己的函数,该函数以您想要的方式自动执行这两个步骤。然后,您可以将该功能放在您的.Rprofile或包中,以便它始终可用。

于 2012-06-08T21:49:12.263 回答