我是一名Excel用户,试图将我的一些常规数据报告任务转换为R. Excel中最强大的功能之一是能够对数据进行透视和排序。我知道这些函数也是R中的特性,但我不知道如何编写代码来解决这个特定的分组和排序问题。
基本上,使用R我想采用如下所示的数据集:
将其转换为如下所示:
请注意,最终表格按团队分组,然后按得分点数对摘要数据进行排序。学习如何在R中做到这一点将节省大量时间。
先谢谢你的帮助!
答案 0 :(得分:3)
您需要的两个功能......一旦您有一个示例...... xtabs
和ftable
。首先,我们将现有表转换为数据帧,然后注意计数现在位于名为“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
我没有得到很多分,但我曾经在SO上演示了如何做小计和总计:
R: calculating column sums & row sums as an aggregation from a dataframe
答案 1 :(得分:2)
首先,欢迎来到R和SO。如果您遵循此处发布问题的指导原则,您会发现您会得到更好的答案:
How to make a great R reproducible example?
您可以通过多种方式完成您的要求。
首先,您需要对sum
创建的每个分组使用c(Team,Player)
函数。有几种方法可以做到这一点:
by
,以及as.data.frame.by
包中的taRifx
ddply
在plyr
包中
然后获取结果输出并对其进行排序(再次,有很多方法可以做到这一点):
sort
在taRifx
包中
{li> arrange
在plyr
包中
因为听起来你会做很多事情,所以我强烈建议你创建自己的功能,按照你想要的方式自动完成两个步骤。然后,您可以将该功能放在.Rprofile
或包中,以便它始终可用。