R中重复行之间的平均值

生物危害

我有一个数据框,df其中的行与名称列重复,但与值列不重复:

name    value   etc1    etc2
A       9       1       X
A       10      1       X
A       11      1       X
B       2       1       Y
C       40      1       Y
C       50      1       Y

我需要将重复的名称聚合为一行,同时计算值列的平均值。预期的输出如下:

name    value   etc1    etc2
A       10      1       X
B       2       1       Y
C       45      1       Y

我尝试使用,df[duplicated(df$name),]但是当然这不会给我重复的平均值。我想使用aggregate(),但是问题是该函数的FUN部分也将适用于所有其他列,并且在其他问题中,它将无法计算char内容。由于所有其他列在“重复项”上具有相同的内容,因此我需要像名称列一样对它们进行汇总。有什么提示...吗?

研究

这里data.table解决。从某种意义上说,该解决方案是通用的,即使对于具有60列的data.frame也可以使用。由于我按值不同的所有变量将数据分组(请参见下面的创建键的方法)

library(data.table)
dat <- read.table(text='name    value   etc1    etc2
A       9       1       X
A       10      1       X
A       11      1       X
B       2       1       Y
C       40      1       Y
C       50      1       Y',header=TRUE)
keys <- colnames(dat)[!grepl('value',colnames(dat))]
X <- as.data.table(dat)
X[,list(mm= mean(value)),keys]
  name etc1 etc2 mm
1:    A    1    X 10
2:    B    1    Y  2
3:    C    1    Y 45

编辑扩展到多个变量

如果您有多个要计算平均值的数值变量,例如,如果您的数据如下所示

  name value etc1 etc2     value1
1    A     9    1    X  2.1763485
2    A    10    1    X -0.7954326
3    A    11    1    X -0.5839844
4    B     2    1    Y -0.5188709
5    C    40    1    Y -0.8300233
6    C    50    1    Y -0.7787496

上面的解决方案可以这样扩展:

X[,lapply(.SD,mean),keys]
   name etc1 etc2 value     value1
1:    A    1    X    10  0.2656438
2:    B    1    Y     2 -0.5188709
3:    C    1    Y    45 -0.8043865

这将计算键列表中不存在的所有变量的均值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取值之间的平均值,该平均值位于R中的上一行和下一行?

来自分类Dev

找出与重复行平均值的差异

来自分类Dev

计算排除R中某些列的行的平均值

来自分类Dev

R中的分组移动平均值

来自分类Dev

在R中绘制“历史平均值”

来自分类Dev

R中的相同平均值

来自分类Dev

R如何删除列中的重复元素并获取平均值

来自分类Dev

计算R中成对数据中平均值之间的差异

来自分类Dev

熊猫数据框中重复列的平均值

来自分类Dev

如何获取postgresql列中重复值的平均值?

来自分类Dev

数据帧变量之间的R移动平均值

来自分类Dev

R:组合变量对计算它们之间的平均值

来自分类Dev

Python中数组之间的平均值与nan值

来自分类Dev

行均等的平均值

来自分类Dev

行均等的平均值

来自分类Dev

为R中的行的平均值和标准差添加列

来自分类Dev

将矩阵转换为R中的累积行平均值矩阵

来自分类Dev

使用前50行计算R中的移动平均值

来自分类Dev

如何通过取行的平均值从数据集中在R中创建表?

来自分类Dev

计算R中具有相似值的行的平均值

来自分类Dev

将矩阵转换为R中的累积行平均值矩阵

来自分类Dev

如何直接从 R 中的 csv 行范围获取平均值?

来自分类常见问题

如何获取位于R的上一行和下一行的值之间的平均值?

来自分类Dev

R:向量的平均值

来自分类Dev

R:如何计算变量每10行的平均值

来自分类Dev

R:如何使 sapply 计算行的平均值?

来自分类Dev

熊猫重复测量平均值

来自分类Dev

Google Spreadsheet中的平均值平均值

来自分类Dev

计算表中某列的某些行的平均值