当前位置:  开发笔记 > 编程语言 > 正文

按组计算摘要并将值返回到数据框中

如何解决《按组计算摘要并将值返回到数据框中》经验,为你挑选了2个好方法。

ave() 是该任务的功能:

df$max.by.id <- ave(df$value, df$id, FUN=max) 

例:

df <- data.frame(
  id = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
  value = c(4,3,1,3,4,6,6,1,8,4))

df$max.by.id <- ave(df$value, df$id, FUN=max) 

结果ave()与原始值向量具有相同的长度(也是分组变量的长度).结果的值相对于分组变量到达正确的位置.有关更多信息,请阅读文档ave().



1> jogo..:

ave() 是该任务的功能:

df$max.by.id <- ave(df$value, df$id, FUN=max) 

例:

df <- data.frame(
  id = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
  value = c(4,3,1,3,4,6,6,1,8,4))

df$max.by.id <- ave(df$value, df$id, FUN=max) 

结果ave()与原始值向量具有相同的长度(也是分组变量的长度).结果的值相对于分组变量到达正确的位置.有关更多信息,请阅读文档ave().



2> Cath..:

使用data.table,您可以通过id"内部"数据计算最大值,自动添加新计算的值(由id唯一):

library(data.table)
setDT(df)[, max.by.id := max(value), by=id]
df
#    id value max.by.id
# 1: A1     4         8
# 2: A2     3         3
# 3: A4     1         6
# 4: A2     3         3
# 5: A1     4         8
# 6: A4     6         6
# 7: A3     6         6
# 8: A2     1         3
# 9: A1     8         8
#10: A3     4         6

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有