前沿科技创业的驱动者

R语言中的数据汇总

2016-08-19 04:06 阅读(239)    评论(0)   

问题:

在R中,如何对分组的数据进行汇总(统计其均值、方差等)?

指南:

下文中将介绍三种可用于对根据特定变量分组后的数据分别调用汇总函数(例如均值、标准差等等)的方法。

  • ddply()函数:这是最为简便的方法,需要调用plyr包,我们在此大力推荐大家使用。
  • summarizeBy() 函数:这也是个相对简单的方法,需要调用doBy包。
  • aggregate()函数:这个函数内置于R的原封安装中,相对来说使用起来会较为复杂一点。

假设我们拥有如下数据,根据数据中样本性别和条件的不同,我们可以将其分为F-placeboF-aspirinM-placeboM-aspirin四个组别。我们的任务是,分别统计每个组别中的样本个数、变量change的均值、标准差以及其均值标准误。

1

使用ddply:

2

缺失值处理

如果数据中存在确实值NA,那我们就需要对每一个函数设置参数na.rm=TRUE。函数length()没有内置na.rm选项,所以对于这种情况我们需要使用sum(!is.na(...))语句,来确认数据集中有多少的非缺失值。

3
一个用于样本计数以及计算均值、标准差、均值标准误和置信区间的函数

有时我们不需要像上文所述方法一样手动的取指定我们需要用于标准差计算的值,构建一个函数便能帮我们搞定以下所有的事:

  • 计算均值、计算标准差、样本计数
  • 计算均值标准误(友情提示,这个值在计算过程中不会用到组内变量。 更多详情见../../Graphs/Plotting means and error bars (ggplot2) )
  • 计算95%的置信区间(或是其他你所需求的数值)
  • 对列进行重命名从而使结果数据集更便于进一步的操作

为了使用这个函数,我们需要在进行计算前先把下面的代码粘贴到自己的程序中:

45

运用实例:summarySE函数帮你一步搞定

6

用NA来填充数据集中为空的组合情况

有些时候,汇总数据框中会存在一些空的因素组合情况,也就是说,这些组合理论上是可以存在的,但是并没有实际出现在我们的原始数据集中。有时,我们需要在数据框中用NA值对将这样的组合对应的内容进行替换填充。要完成这一点,我们需要在调用ddplysummarySE的相关语句时设置参数.drop=FALSE

运用实例:6.1

使用

使用summarizeBy()对数据进行折叠汇总:7

需要注意的是,这样的均值标准误并不适用于组内变量的比较 更多详情见../../Graphs/Plotting means and error bars (ggplot2)

缺失值处理

如果数据中存在缺失值NA,那我们就需要对每一个函数设置参数na.rm=TRUE。函数length()没有内置na.rm选项,所以对于这种情况我们需要使用sum(!is.na(...))语句,来确认数据集中有多少的非缺失值。8

一个用于样本计数以及计算均值、标准差、均值标准误和置信区间的函数

和对ddply包的使用类似的,通过组合运用doBy包中的函数,我们也可以构建一个类似的函数summarySE,帮我们搞定以下所有的事:

  • 计算均值、计算标准差、样本计数
  • 计算均值标准误(友情提示,这个值在计算过程中不会用到组内变量。 更多详情见../../Graphs/Plotting means and error bars (ggplot2) )
  • 计算95%的置信区间(或是其他你所需求的数值)
  • 对列进行重命名从而使结果数据集更便于进一步的操作

为了使用这个函数,我们需要在进行计算前先把下面的代码粘贴到自己的程序中:9

10

运用实例:summarySE函数帮你一步搞定

11
 用NA来填充数据集中为空的组合情况

有些时候,汇总数据框中会存在一些空的因素组合情况,也就是说,这些组合理论上是可以存在的,但是并没有实际出现在我们的原始数据集中。有时,我们需要在数据框中用NA值对将这样的组合对应的内容进行替换填充。

下面的函数将帮助我们将0值填充入所有的空缺组合对应的内容:

12运用实例:13

使用

aggregate函数使用起来可能相对繁琐一些,但由于它是R自带的内置函数,因而我们在使用它之前不必安装其他的程序包。141516

如果你想要无视数据集中存在的NA值,请设置参数na.rm=TRUE,如下所示:

17

公司二维码

 

 

分享到:

相关推荐

  • 20160830111159547

    科学家研发出胰岛素丸 或取代注射胰岛素的方式

    很多糖尿病患者由于缺乏胰岛素分泌能力,需要每天注射胰岛素.但长期注射胰岛素也会给病人带来许多烦恼.不过这一情况可能很快会发生改变。据美国尼亚加拉大学((Niagara University)的研究人员透露,他们已经成功研发出了一种胰岛素丸。这种药丸能够抵抗胃内的强酸环境,直接通过肠道进入血液,随后释放胰岛...

  • QQ截图20160920105054

    首个月球村 将由3D打印来完成

    在月球上建造自己的空间站是人们探索月球的新目标。但是月球环境恶劣,在上面长期作业肯定不行,于是科学家们有一个更加快捷有效的方法,3D打印一个月球村。 据英国媒体报道,欧洲空间局计划在最短15年时间内,在月球上打造出一个3D打印的“月球村”。 不久前,来自世界各地的太空探索专家对建立...

  • QQ截图20160905115633

    3Doodler PRO:现实版“神笔马良”

      内容摘要 2013年,WobbleWorks公司推出一款3D打印笔3Doodler,日前,这家公司又在2016年的柏林国际电子消费品展览会(IFA)带来了一款新品,一款据称是准专业级的3D打印笔--3Doodler PRO。   大家还是否记得此前的3Doodler,它是WobbleWorks公司推出的一款3D打印笔,堪...

  • Use R

    R语言中的t检验丨数析学院

    问题 在R中,我们如何检验从总体中抽样得到的两组样本是否有不同的均值,或是通过总体中的某一组样本检验总体均值与某一理论均值间的差异。 指南 示例数据 我们选择内置的sleep数据集作为示例数据。 接下来,我们将sleep数据集处理为宽数据;在之前发布的教程中,我们曾谈到过数据集长宽转换的方法...

  • 60e7443d25b7fabb27ec666f65c4db38

    人能不能活过150岁?美国两位科学家打了个赌

    Steven Austad(左)打赌认为人能活到150岁;Jay Olshansky则持相反观点。 美国两名研究人员在2001年曾打赌是否有人寿命可以达到150岁,16年来,科学家曾经押下的赌注已经增加到600美元。如果这些资金以当前的兑换率增长,那么赢家的后代在2150年将可得到数亿美元。 这场友好的打赌从2000年开始,当...

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

SME 前沿科技创业的驱动者