gpt4 book ai didi

r - 有什么方法可以进行过滤以及在ddply中进行汇总?

转载 作者:行者123 更新时间:2023-12-04 11:41:03 24 4
gpt4 key购买 nike

我只是从ddply开始,并发现它非常有用。我想汇总一个数据框,并根据汇总列是否具有特定值来消除最终输出中的某些行。这就像SQL中的HAVINGGROUP BY一样。这是一个例子:

input = data.frame(id=     c( 1, 1, 2, 2, 3,   3),
metric= c(30,50,70,90,40,1050),
badness=c( 1, 5, 7, 3, 3, 99))
intermediateoutput = ddply(input, ~ id, summarize,
meanMetric=mean(metric),
maxBadness=max(badness))
intermediateoutput[intermediateoutput$maxBadness < 50,1:2]

这给出了:
  id meanMetric
1 1 40
2 2 80

这是我想要的,但是我可以通过某种方式在 ddply语句中一步完成吗?

最佳答案

您应该尝试使用dplyr。它更快,并且代码更易于阅读和理解,尤其是在使用管道(%>%)的情况下:

input %>%
group_by(id) %>%
summarize(meanMetric=mean(metric), maxBadness=max(badness)) %>%
filter(maxBadness <50) %>%
select(-maxBadness)

在@Arun注释之后,您可以通过以下方式简化代码:
input %>%
group_by(id) %>%
filter(max(badness)<50) %>%
summarize(meanMetric=mean(metric))

关于r - 有什么方法可以进行过滤以及在ddply中进行汇总?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com